我有两个对象列表,我想过滤我的 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"
}
]
最佳答案
使用 filter
和 some
功能
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/