lodash 从数组中获取与值数组不匹配的项

lodash get items from array that does not match array of values

要从数组中获取与值数组匹配的项目,我使用这个:

var result =_(response).keyBy('id').at(arrayOfIDs).value();

我该如何做相反的事情?获取与值数组不匹配的项。

您不需要 lodash,只需使用普通的 javascript;它也更容易阅读...

function getId (val) {
    return val.id;
}

function notMatchId (val) {
    return arrayOfIDs.indexOf(val) === -1;
}

var result = response.map(getId).filter(notMatchId);

使用 vanilla JS 很容易做到这一点。

var nonMatchingItems = response.filter(function (item) {
    return arrayOfIDs.indexOf(item.id) === -1;
});

如果您确实必须使用 lodash,lodash's _.filter() 也可以使用相同的方法。

以上ES6版本:

var nonMatchingItems = response.filter(item => arrayOfIDs.indexOf(item.id) === -1);

// or, shorter
var nonMatchingItems = response.filter(item => !arrayOfIDs.includes(item.id));