js 两个数组中找出不同的对象
时间: 2023-08-08 14:09:06 浏览: 47
可以使用 `filter` 方法结合 `includes` 方法来实现。
假设有两个数组 `arr1` 和 `arr2`,其中包含一些对象。我们可以遍历其中一个数组,使用 `includes` 方法判断另一个数组中是否包含当前对象,如果不包含则将该对象加入到结果数组中。代码如下:
```javascript
const arr1 = [{id: 1, name: 'Alice'}, {id: 2, name: 'Bob'}, {id: 3, name: 'Charlie'}];
const arr2 = [{id: 1, name: 'Alice'}, {id: 3, name: 'Charlie'}, {id: 4, name: 'David'}];
const diff = arr1.filter(obj => !arr2.includes(obj));
console.log(diff); // [{id: 2, name: 'Bob'}]
```
在上面的代码中,我们使用 `filter` 方法遍历 `arr1` 数组,并使用箭头函数判断 `arr2` 数组中是否包含当前对象。如果不包含,则将该对象加入到结果数组 `diff` 中。最后输出 `diff` 数组即可。
相关问题
js两个对象数组找出id不同元素
要找出两个对象数组中id不同的元素,可以使用JavaScript的一些内置方法和循环来实现。
首先,假设我们有两个对象数组arr1和arr2,每个数组包含多个对象,每个对象有一个id属性。
我们可以使用循环遍历arr1中的每个对象,并用每个对象的id属性与arr2中的每个对象的id属性进行比较。如果找到一个id不同的对象,则将该对象添加到一个新的数组中。
具体步骤如下:
1. 创建一个新的空数组,用于存放id不同的元素。
2. 使用forEach()方法遍历arr1中的每个对象。
3. 在forEach()方法的回调函数中,使用find()方法在arr2中查找具有相同id的对象。
4. 如果find()方法返回undefined,则表示在arr2中未找到相同id的对象,将当前对象添加到新的数组中。
5. 最后,返回新的数组,其中包含id不同的元素。
以下是用代码实现上述步骤的例子:
```javascript
function findDifferentElements(arr1, arr2) {
let differentElements = [];
arr1.forEach((obj1) => {
const isDifferent = !arr2.find((obj2) => obj2.id === obj1.id);
if (isDifferent) {
differentElements.push(obj1);
}
});
return differentElements;
}
```
这样,调用`findDifferentElements(arr1, arr2)`将返回一个包含id不同的元素的数组。
请注意,以上代码假设arr1和arr2中的每个对象包含一个id属性,且具有相同的属性名称。如果属性名称不同,需要相应地修改代码中的比较条件。
js怎样找出两个数组中不同的数据
可以使用 JavaScript 中的 filter() 方法和 includes() 方法来找出两个数组中不同的数据。具体实现如下:
```javascript
const arr1 = [1, 2, 3, 4, 5];
const arr2 = [3, 4, 5, 6, 7];
const diff = arr1.filter(num => !arr2.includes(num)).concat(arr2.filter(num => !arr1.includes(num)));
console.log(diff); // [1, 2, 6, 7]
```
以上代码中,我们先使用 filter() 方法过滤出 arr1 中不在 arr2 中的元素,再使用 concat() 方法将其与 arr2 中不在 arr1 中的元素合并成一个新数组 diff,最后输出 diff 即可。