js对象数组合并去重的方法
1. 什么是对象数组
在JavaScript中,数组是一种特殊的对象类型。对象数组是具有
相同属性和方法的对象的集合。在这种类型的数组中,每个元素都是
一个包含多个键值对的对象。这些键值对可以是字符串,数字,布尔值,数组或其他对象类型。
2. 合并对象数组
合并对象数组是将两个或多个对象数组组合成一个大数组的过程。在JavaScript中,合并两个或多个数组通常使用concat()方法完成。但是,对于对象数组,简单地使用concat()方法合并数组会导致对象
重复出现的问题。
以下是一个合并两个对象数组的示例:
```javascript
var arr1 = [{name: 'John', age: 25}, {name: 'Jane', age: 30}];
var arr2 = [{name: 'Mary', age: 35}, {name: 'John', age: 25}];
var arr3 = at(arr2);
console.log(arr3);
```
最终输出结果为:
```javascript
[{name: 'John', age: 25}, {name: 'Jane', age: 30}, {name: 'Mary', age: 35}, {name: 'John', age: 25}]
```
可以看到,John出现了两次,说明对象重复了。为了解决这个问题,需要使用一些方法去重对象。
3. 去重对象的方法
在JavaScript中,可以使用以下方法去重对象数组:
3.1 使用filter()和indexOf()
filter()方法可以过滤对象数组中的元素,indexOf()方法可以确
定一个给定元素在数组中是否存在。通过这两个方法的结合使用,可
以完成对象数组的去重。
以下是一个使用filter()和indexOf()方法去重对象数组的示例:```javascript
var arr1 = [{name: 'John', age: 25}, {name: 'Jane', age: 30}];
var arr2 = [{name: 'Mary', age: 35}, {name: 'John', age: 25}];
var arr3 = at(arr2);
var arr4 = arr3.filter(function(item, index, arr){
return index === arr.indexOf(item);
});
console.log(arr4);
```
最终输出结果为:
```javascript
[{name: 'John', age: 25}, {name: 'Jane', age: 30}, {name: 'Mary', age: 35}]
```
3.2 使用reduce()和findIndex()
reduce()方法可以用来对数组中的元素进行聚合,findIndex()方法可以到一个元素在数组中的位置。结合使用这两个方法,可以去重对象数组。
以下是一个使用reduce()和findIndex()方法去重对象数组的示例:
var arr1 = [{name: 'John', age: 25}, {name: 'Jane', age: 30}];
var arr2 = [{name: 'Mary', age: 35}, {name: 'John', age: 25}];
var arr3 = at(arr2);
var arr4 = duce(function(prev, cur){
if(prev.findIndex(function(item){
return item.name === cur.name && item.age === cur.age;
}) === -1){
prev.push(cur);
}
return prev;
}, []);
console.log(arr4);
```
最终输出结果为:
[{name: 'John', age: 25}, {name: 'Jane', age: 30}, {name: 'Mary', age: 35}]
```
3.3 使用Map()和Set()
Map()是一种ES6中的新类型,它可以将任意类型的值作为键。Set()是一种ES6中的新类型,它可以去重任意类型的元素。结合使用这两种类型,可以很方便地去重对象数组。
以下是一个使用Map()和Set()方法去重对象数组的示例:es6字符串转数组
```javascript
var arr1 = [{name: 'John', age: 25}, {name: 'Jane', age: 30}];
var arr2 = [{name: 'Mary', age: 35}, {name: 'John', age: 25}];
var arr3 = at(arr2);
var arr4 = Array.from(new Set(arr3.map(JSON.stringify)), JSON.parse);
console.log(arr4);
```

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。