The*_*rus 4 javascript arrays duplicates javascript-objects ecmascript-6
搜索和尝试,到目前为止没有运气。
var newUsers = [{name: 'rich', id: 25}, {name: 'lauren', id: 35}, {name: 'dave', id: 28} ]
var likedUsers = [{name: 'derek', id: 39}, {name: 'rich', id: 25}, {name: 'brian', id: 38} ]
Run Code Online (Sandbox Code Playgroud)
我想要返回的是:
var leftUsers = [{name: 'lauren', id: 35}, {name: 'dave', id: 28} ]
Run Code Online (Sandbox Code Playgroud)
基本上没有rich对象,因为这是重复的。我只关心id钥匙。
我试过了:
newUsers.forEach((nUser) => {
likedUsers.forEach((lUser) => {
if (nUser.id !== lUser.id){
leftUsers.push(nUser)
}
})
})
Run Code Online (Sandbox Code Playgroud)
但显然这行不通,因为这只会在它们不匹配时立即添加它们。
如果可能,想要使用 forEach/map/filter 的 es6 解决方案
谢谢
随着array.prototype.filter过滤掉存在于项目likedUsers和array.prototype.findIndex检查存在,它应该是:
var newUsers = [{name: 'rich', id: 25}, {name: 'lauren', id: 35}, {name: 'dave', id: 28} ];
var likedUsers = [{name: 'derek', id: 39}, {name: 'rich', id: 25}, {name: 'brian', id: 38} ];
var leftUsers = newUsers.filter(u => likedUsers.findIndex(lu => lu.id === u.id) === -1);
console.log(leftUsers);Run Code Online (Sandbox Code Playgroud)