前端两个数组作比较,将不同的那条数据单独取出放到一个新数组
时间: 2024-02-25 18:51:32 浏览: 25
可以使用 JavaScript 中的 Array.prototype.filter() 方法筛选出两个数组中不同的数据,然后将其添加到一个新的数组中,代码示例如下:
```javascript
const arr1 = [1, 2, 3, 4, 5];
const arr2 = [2, 3, 4, 5, 6];
const diffArr = arr1.filter((item) => !arr2.includes(item))
.concat(arr2.filter((item) => !arr1.includes(item)));
console.log(diffArr); // [1, 6]
```
上述代码中,使用 filter() 方法对 arr1 和 arr2 进行筛选,分别找出不在另一个数组中的数据,然后使用 concat() 方法将两个数组合并成一个新的数组,最后将不同的数据返回到 diffArr 数组中。这样,就能将两个数组中不同的数据单独取出放到一个新数组了。
相关问题
前端对比两个数组对象中的数据,相等的不重复添加到新数组
可以使用 JavaScript 的 Array.prototype.filter() 和 Array.prototype.some() 方法来实现此功能。具体实现步骤如下:
1. 遍历第一个数组对象,使用 filter() 方法筛选出在第二个数组对象中不存在的数据。
2. 在第二个数组对象中使用 some() 方法判断筛选出来的数据是否已经存在于新数组中,如果不存在则将其添加到新数组中。
代码示例:
```javascript
const arr1 = [{id: 1, name: 'Alice'}, {id: 2, name: 'Bob'}, {id: 3, name: 'Charlie'}];
const arr2 = [{id: 2, name: 'Bob'}, {id: 4, name: 'David'}, {id: 5, name: 'Emma'}];
const newArr = arr1.filter(item => {
return !arr2.some(obj => obj.id === item.id && obj.name === item.name);
});
arr2.forEach(item => {
if (!newArr.some(obj => obj.id === item.id && obj.name === item.name)) {
newArr.push(item);
}
});
console.log(newArr); // [{id: 1, name: 'Alice'}, {id: 2, name: 'Bob'}, {id: 4, name: 'David'}, {id: 5, name: 'Emma'}]
```
上述代码中,首先使用 filter() 方法筛选出在 arr2 中不存在的数据。然后遍历 arr2 数组,使用 some() 方法判断筛选出来的数据是否已经存在于新数组 newArr 中,如果不存在则将其添加到新数组中。最后输出新数组 newArr 即可。
前端同时循环长度不同三个数组将每个数组的每一项相加放到新的数组
可以使用 for 循环遍历三个数组,取出每个数组对应位置的值相加,然后将结果放入新的数组中。代码示例:
```
let arr1 = [1, 2, 3];
let arr2 = [4, 5, 6, 7];
let arr3 = [8, 9];
let result = [];
for (let i = 0; i < Math.max(arr1.length, arr2.length, arr3.length); i++) {
let sum = 0;
if (i < arr1.length) {
sum += arr1[i];
}
if (i < arr2.length) {
sum += arr2[i];
}
if (i < arr3.length) {
sum += arr3[i];
}
result.push(sum);
}
console.log(result); // [13, 16, 9, 7]
```
注意,这里使用了 Math.max() 函数获取三个数组中最长的长度,以保证循环次数足够。同时,使用了 if 判断语句来避免数组越界的情况。