use*_*542 2 html javascript arrays lodash
我有以下 Plunkr,它工作得很好。
https://plnkr.co/edit/WDjoEK7bAVpKSJbAmB9D?p=preview
它使用 lodash 的 _.differenceWith() 函数,将两个数组中不包含的所有数组值按顺序保存。
var result = _.differenceWith(data, test, _.isEqual);
Run Code Online (Sandbox Code Playgroud)
现在我有两个问题:
1.) 在我们的项目中,我们使用较旧的 Lodash 版本,其中未实现功能 differenceWith
2.) 我只需要比较数组的一个值。这当前比较完整的对象。我只需要比较 id 属性。
这将根据属性找到arr1不在其中的对象。arr2id
var arr1 = [ { "id": "1" }, { "id": "2" }, { "id": "3" } ];
var arr2 = [ { "id": "1" }, { "id": "2" } ];
var result = arr1.filter(o1 => arr2.filter(o2 => o2.id === o1.id).length === 0);
console.log(result);Run Code Online (Sandbox Code Playgroud)
请注意,此示例不需要 lodash。
如果要使用不同的比较而不是id,可以将o2.id === o1.id部件更改为不同的属性。
这是一个更通用的解决方案:
var arr1 = [ { "name": "a" }, { "name": "b" }, { "name": "c" } ];
var arr2 = [ { "name": "a" }, { "name": "c" } ];
function differenceWith(a1, a2, prop) {
return a1.filter(o1 => a2.filter(o2 => o2[prop] === o1[prop]).length === 0);
}
var result = differenceWith(arr1, arr2, 'name');
console.log(result);Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6465 次 |
| 最近记录: |