js通过数组里的值比较另一个数组对象的每一项返回不符合条件的对象组成的数组
时间: 2023-05-21 18:06:38 浏览: 80
可以通过循环遍历两个数组,将每个对象的属性逐一比较,如果存在不符合条件的情况,则将该对象添加到一个新数组中并返回。
以下是示例代码:
let arr1 = [{id: 1, name: 'Tom'}, {id: 2, name: 'Jane'}, {id: 3, name: 'John'}];
let arr2 = [{id: 1, name: 'Tom'}, {id: 2, name: 'Jack'}, {id: 4, name: 'Kate'}];
let result = [];
for(let i=0;i<arr1.length;i++) {
for(let j=0;j<arr2.length;j++) {
if(arr1[i].id === arr2[j].id && arr1[i].name !== arr2[j].name) {
result.push(arr2[j]);
}
}
}
console.log(result);
输出结果为:[{id: 2, name: 'Jack'}, {id: 4, name: 'Kate'}]
相关问题
js通过数组里的值比较l另一个数组对象的每一项返回符合条件的对象
可以使用 Array.prototype.filter() 来遍历数组并返回符合条件的对象。以下是一个示例代码:
```javascript
const arr1 = [{id: 1, name: 'Alice'}, {id: 2, name: 'Bob'}, {id: 3, name: 'Charlie'}];
const arr2 = [{id: 2, name: 'Bob'}, {id: 4, name: 'Dave'}];
const result = arr1.filter(item => arr2.find(obj => obj.id === item.id && obj.name === item.name));
console.log(result) // [{id: 2, name: 'Bob'}]
```
这个示例代码中,我们使用了 `Array.prototype.filter()` 来筛选 `arr1` 数组中符合条件的对象。我们通过 `arr2.find()` 来查找 `arr2` 中是否存在与当前遍历到的 `arr1` 中的对象 `item` 属性 `id` 和 `name` 值完全匹配的对象。如果找到了,`arr2.find()` 就会返回该对象,否则返回 `undefined`,最终 `Array.prototype.filter()` 会根据 `arr2.find()` 的返回值是否为真值来决定是否返回该对象。
js 三个数组 转化为一个数组对象 数组的每一项代表数组对象中的键名
可以使用 JavaScript 的 `reduce()` 方法来实现将三个数组转化为一个数组对象的操作。具体实现如下:
```javascript
const keys = ['name', 'age', 'gender'];
const values1 = ['Tom', 18, 'male'];
const values2 = ['Jerry', 20, 'female'];
const values3 = ['Bob', 22, 'male'];
const result = keys.reduce((acc, cur, index) => {
acc.push({ [cur]: [values1[index], values2[index], values3[index]] });
return acc;
}, []);
console.log(result);
```
其中,`keys` 数组包含了三个键名,`values1`、`values2` 和 `values3` 分别代表三个数组,`reduce()` 方法将三个数组转化为一个数组对象,对于每一个键名,使用对象字面量的方式创建一个键为该键名、值为一个数组的对象,并将三个数组的对应元素作为该数组的元素,最后将该对象添加到结果数组中。`reduce()` 方法返回最终的结果数组,即转化后的数组对象。
阅读全文