两个数组对象如果相同就放到一个新数组,如果不相同则放入另外一个数组 用ES6遍历
时间: 2024-03-10 12:46:46 浏览: 21
可以使用 ES6 中的 `Array.prototype.filter()` 和 `Array.prototype.find()` 方法来实现这个功能。下面是一个示例代码:
```javascript
const arr1 = [
{ id: 1, name: "apple" },
{ id: 2, name: "banana" },
{ id: 3, name: "pear" },
{ id: 4, name: "orange" }
];
const arr2 = [
{ id: 1, name: "apple" },
{ id: 3, name: "pear" },
{ id: 5, name: "grape" }
];
const sameArr = arr1.filter(item1 => arr2.find(item2 => item2.id === item1.id && item2.name === item1.name));
const diffArr = arr1.filter(item1 => !arr2.find(item2 => item2.id === item1.id && item2.name === item1.name)).concat(arr2.filter(item2 => !arr1.find(item1 => item1.id === item2.id && item1.name === item2.name)));
console.log("Same array:", sameArr);
console.log("Different array:", diffArr);
```
在这个示例代码中,我们使用 `Array.prototype.filter()` 方法来遍历 `arr1` 数组,并使用 `Array.prototype.find()` 方法来查找 `arr2` 数组中是否存在与当前元素相同的元素。如果存在,则将它们放入 `sameArr` 数组中。否则,将它们放入 `diffArr` 数组中。注意,在 `diffArr` 数组中,我们需要将 `arr2` 数组中不同于 `arr1` 数组的元素也加入其中。最后,我们输出这两个数组。
需要注意的是,这个算法的时间复杂度仍然是 O(n^2),因为 `Array.prototype.find()` 方法也需要遍历数组。如果数组很大,效率可能会较低。