js删除两个数组中相同的数据
时间: 2024-01-10 17:04:32 浏览: 74
可以使用 JavaScript 的数组方法 `filter()` 和 `includes()` 来实现删除两个数组中相同的数据。
以下是一个示例代码:
```javascript
let arr1 = [1, 2, 3, 4, 5];
let arr2 = [3, 4, 5, 6, 7];
arr1 = arr1.filter(num => !arr2.includes(num));
arr2 = arr2.filter(num => !arr1.includes(num));
console.log(arr1); // [1, 2]
console.log(arr2); // [6, 7]
```
在上面的代码中,首先使用 `filter()` 方法过滤掉 `arr1` 中存在于 `arr2` 中的元素,这样得到的 `arr1` 就是两个数组中不同的元素。同理,使用 `filter()` 方法过滤掉 `arr2` 中存在于 `arr1` 中的元素,得到的 `arr2` 就是两个数组中不同的元素。
相关问题
vue 删除两个集合中相同的数组数据
你可以使用 JavaScript 的 `filter` 方法和 `includes` 方法来实现删除两个集合中相同的数组数据。具体步骤如下:
1. 使用 `filter` 方法过滤掉两个数组中相同的元素,得到剩余的元素组成的新数组。
```javascript
const arr1 = [1, 2, 3, 4];
const arr2 = [3, 4, 5, 6];
const result = arr1.filter(item => !arr2.includes(item));
console.log(result); // [1, 2]
```
2. 如果你要删除的是对象数组,可以使用对象的某个属性来比较是否相同,例如以下代码删除 `arr1` 和 `arr2` 中 `id` 相同的对象。
```javascript
const arr1 = [{id: 1, name: 'Tom'}, {id: 2, name: 'Jack'}, {id: 3, name: 'Lucy'}];
const arr2 = [{id: 2, name: 'Jack'}, {id: 4, name: 'Bob'}, {id: 5, name: 'Alice'}];
const result = arr1.filter(item1 => !arr2.some(item2 => item1.id === item2.id));
console.log(result); // [{id: 1, name: 'Tom'}, {id: 3, name: 'Lucy'}]
```
在 Vue 中,你可以在组件的 `methods` 中定义一个方法来实现上述逻辑,例如:
```javascript
methods: {
filterData() {
const arr1 = this.data1;
const arr2 = this.data2;
const result = arr1.filter(item => !arr2.includes(item));
this.data1 = result;
}
}
```
当你调用 `filterData` 方法时,会将 `data1` 中和 `data2` 中相同的元素删除,并更新 `data1` 的值。
js 比较两个数组的差异
在JavaScript中,比较两个数组的差异通常有两种方式:找出新增、删除或修改的元素。以下是两种常用的方法:
1. **使用`Set`数据结构**:
- 将第一个数组转换为`Set`,这样可以快速获取每个元素是否唯一。
- 再分别将第二个数组添加到这个`Set`中,并从原`Set`中减去,得到的结果就是新增加的元素。
- 对于删除的元素,你可以再次通过`Set`对比,查看原`Set`中有但新`Set`中没有的元素。
```javascript
function arrayDiff(arr1, arr2) {
const set1 = new Set(arr1);
const set2 = new Set(arr2);
const added = [...set2].filter(e => !set1.has(e));
const removed = [...set1].filter(e => !set2.has(e));
return { added, removed };
}
```
2. **使用`lodash`库**:
如果你正在使用`lodash`库,它有一个便捷的方法`_.difference`和`_.intersection`可以帮助你找到差异:
```javascript
const _ = require('lodash');
function arrayDiff(arr1, arr2) {
const added = _.difference(arr2, arr1);
const removed = _.difference(arr1, arr2);
return { added, removed };
}
```
阅读全文