javascript - 对象交集数组

标签 javascript

我有两个对象列表,我想过滤我的 array1没有 file array2 中的 key :

我做了什么 :

array1 = array1.filter(function(n) {
    for(var i=0; i < array2.length; i++){
      if(n.file != array2[i].file){
        return n;
      }
    }
});

这正好返回 array1而如果我替换 !===它返回我想摆脱的对象。

我不明白为什么。

https://jsfiddle.net/hrzzohnL/1/

所以最后我想以这个数组结束:
[
    {
     "file": "tttt.csv",
     "media": "tttt"
    }
]

最佳答案

使用 filtersome功能

var array1 = [{ "file": "tttt.csv", "media": "tttt" }, { "file": "bob_bob.csv", "media": "bob_bob" }, { "file": "bob1_bob1.csv", "media": "bob1_bob1" }, ];

var array2 = [{ "title": "bob_bob", "version": "bob", "date": "27/4/2016", "selected": false, "file": "bob_bob.csv", "media": "bob_bob", "exists": true }, { "title": "bob1_bob1", "version": "bob", "date": "27/4/2016", "selected": false, "file": "bob1_bob1.csv", "media": "bob_bob", "exists": true }]

var res = array1.filter(n => !array2.some(n2 => n.file == n2.file));

document.write(JSON.stringify(res));


*解决方案使用 ES6 箭头功能,在旧浏览器中可能无法使用

关于javascript - 对象交集数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36895167/

相关文章:

javascript - 如何使用 JS 从 HTML 字符串中删除结束标记

javascript - Bootstrap 选项卡搞砸了谷歌地图

javascript - Flowtype libdefs – 如何从不同的 libdef 导入类型?

javascript - Javascript 中的动态类名 - 使用 jsfiddle

javascript - 我无法使用 jQuery 库,并且当 'translating' 为纯 javascript 时,我收到 TypeError : document. getElementById(...) is null

javascript 在继续之前等待整个函数被执行

javascript - 如何将 C++ 值实时传递给 JS/jQuery?

javascript - 使用对象而不是列表填充 react 表

javascript - 如何拦截 JavaScript 触发的表单提交?

javascript - 使用 jquery 在两个选项之间添加一个选项