如果value存在于数组2中,则从数组1中删除Item
Javascript Remove Item from array 1 if value exists in array 2
数组1
[ { "id": 1, "name": "Test" }, { "id": 2, "name": "Test2" } ]
数组2
[ { "id": 1, "name": "Test3" }, { "id": 2, "name": "Test4" }, { "id": 3, "name": "Test2" } ]
如果item存在于数组2中,我需要从数组1中删除它,因此Test2将从数组1中删除。我如何循环两个数组,并检查数组2中的名称值的存在,以便从数组1中删除它?
我非常喜欢在这种东西上加下划线…
array1 = _.reject(array1, function(e1) {
return _.find(array2, function(e2) { return e1.name == e2.name });
});
试试这个:
var existingIds = array2.map(function (item) { // create a list of existing ids in array 2
return item.id;
});
var filteredArray = array1.filter(function (item) { // check each item against existingIds, and if not found there return it
return existingIds.indexOf(item.id) === -1;
});
要做到这一点而不做O(n^2)搜索,我们可以在每个数组上循环一次,增加一点额外的内存开销。
var map = new Map();
array2.forEach(function(item) {
map.set(item.name, true);
});
var result = array1.filter(function(item) {
return !map.has(item.name);
});
注意:我使用Map只是因为它有额外的功能,比如基于任何值设置键。可以使用一个简单的对象
相关文章:
- 如何在映射数组中添加换行符
- javascript结合了数组和字典
- 需要帮助设置json数组
- 不能从angular2中的子组件指定父组件中的数组
- 使用JS将数组转换为json对象
- 数组在递归方法中设置为null
- knockoutjs可观察数组
- Javascript-如何读取json文件中的列并将其保存在Javascript数组中
- 将数组从PHP传递到Javascript
- JavaScript数组排序(函数)用于对表行进行排序,而不是排序
- KnockoutJS从可观察数组中删除项目.Item 是 ul 中的列表项,由 foreach 生成
- 使用push-on-item值合并两个json数组
- 从数组中移除Item会在object的位置留下undefined
- JavaScript中根据item's的索引值将多个数组转换为不同的数组
- 如果value存在于数组2中,则从数组1中删除Item
- MobX计算在item实际插入数组之前运行
- 使用 Javascript 从数组中删除 Item
- 根据item'的属性将数组拆分为数组的数组
- 通过匹配ID检查json数组中是否已经存在item
- jQuery/JavaScript: Push item到最小满'row'在多维数组中