两个数组对象对象如果对象的ID相同就放到一个新数组arr1中,如果第一个数组有的对象第二个没有就放到数组arr2中,如果第二个数组有的对象第一个没有就放到数组arr3中 只要判断唯一值ID就行 用ES6语法
时间: 2023-09-16 22:12:51 浏览: 49
可以使用ES6中的Set数据结构和Array的filter和find方法来实现这个需求。具体代码如下:
```javascript
const arr1 = [];
const arr2 = [];
const arr3 = [];
const set = new Set(arr2.map(obj => obj.ID));
arr1.push(...arr1.filter(obj1 => arr2.find(obj2 => obj2.ID === obj1.ID)));
arr2.push(...arr1.filter(obj1 => !set.has(obj1.ID)));
arr3.push(...arr2.filter(obj2 => !arr1.find(obj1 => obj1.ID === obj2.ID)));
```
首先,创建一个空的Set数据结构,用于存储第二个数组中的ID值。然后,使用filter和find方法筛选出第一个数组中与第二个数组ID相同的对象,并将它们放入arr1中。
接着,使用filter方法筛选出第一个数组中ID在第二个数组中不存在的对象,并将它们放入arr2中。这里使用了Set数据结构的has方法来判断ID是否存在于第二个数组中。
最后,使用filter和find方法筛选出第二个数组中与第一个数组ID不同的对象,并将它们放入arr3中。
相关问题
两个数组对象如果相同就放到一个新数组,如果不相同则放入另外一个数组
可以通过遍历数组对象并比较它们的属性来实现这个功能。下面是一个示例代码:
```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 = [];
const diffArr = [];
for (let i = 0; i < arr1.length; i++) {
let found = false;
for (let j = 0; j < arr2.length; j++) {
if (arr1[i].id === arr2[j].id && arr1[i].name === arr2[j].name) {
sameArr.push(arr1[i]);
found = true;
break;
}
}
if (!found) {
diffArr.push(arr1[i]);
}
}
for (let i = 0; i < arr2.length; i++) {
let found = false;
for (let j = 0; j < sameArr.length; j++) {
if (arr2[i].id === sameArr[j].id && arr2[i].name === sameArr[j].name) {
found = true;
break;
}
}
if (!found) {
diffArr.push(arr2[i]);
}
}
console.log("Same array:", sameArr);
console.log("Different array:", diffArr);
```
在这个示例代码中,我们将 `arr1` 和 `arr2` 中的数组对象进行比较,如果它们的 `id` 和 `name` 属性都相同,则将它们放入 `sameArr` 数组中。如果它们不同,则将它们放入 `diffArr` 数组中。最后,我们输出这两个数组。注意,这个算法是 O(n^2) 的,如果数组很大,效率可能会比较低。
两个数组对象如果相同就放到一个新数组,如果不相同则放入另外一个数组 用ES6遍历
可以使用 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()` 方法也需要遍历数组。如果数组很大,效率可能会较低。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)