好吧,我需要为其他人找到一个数组中没有的内容,我认为在一个示例中我可以更好地解释:
我有一个对象数组,如下所示:
NATIVE: [{"_id": "asd12312312", "name": "item 01"}, {"_id": "1123rwerwe", "name": "item 02"}];
但是我用一个值进行了更新并添加了另一个值,所以它看起来像这样:
NEW: [{"_id": "1123rwerwe", "name": "item 02"}, {"name": "item 03"}];
这个函数需要返回我在另一个数组中获取的内容,也就是说,我需要结果的这个对象:
RESULT: [{"_id": "asd12312312", "name": "item 01"}];
因为比较“ native 数组”和“新数组”,它将返回 native 数组中的内容,而不是新数组中的内容,这样做的目的是了解它是否删除了某些项目。
请注意,新数组存在一个没有 _id
的项目,这是因为它添加了一个新项目,因为谁将生成 _id
是数据库本身。
我使用的是NODE JS
,所以这个功能基本上应该在JAVASCRIPT
中完成
我有这个函数,它告诉我它在一个函数中有什么,而在另一个函数中没有,它工作得很好,但对于我仅返回它没有的东西的情况,它不起作用:
const diffObjects = (object, base) => {
function changes(object, base) {
return _.transform(object, function (result, value, key) {
if (!_.isEqual(value, base[key])) {
result[key] = (_.isObject(value) && _.isObject(base[key])) ? changes(value, base[key]) : value;
}
});
}
return changes(object, base);
};
非常重要的是性能,因为我有 N 个数组要发送到这个函数。
In my example you can see item without _id, in this case the item should be discarded from the logic, need to take into account only the items that have _id
绘图我有两个容器
01 [|||||||||||||]
02 [ |||||||||| |]
在这个例子中我不需要彩色的项目,我需要我在01中有但现在在02中没有的项目,你可以看到最后一个点是彩色的,也就是说,它没有01,现在它了有02,绣花和这个不一样,01里的,03里删掉了。
那么结果就是
R [| || ]
也就是说,它在 01 上有,现在在 02 上没有
如果我使用你正在谈论的逻辑,它会像这样返回我:
RESULT: [{"name": "item 03"}];
最佳答案
您可以使用函数filter
和函数some
来获取新数组中不存在的对象。
此方法使用属性 _id
作为两个数组之间的键/唯一名称
const native = [{"_id": "asd12312312", "name": "item 01"}, {"_id": "1123rwerwe", "name": "item 02"}],
newArray = [{"_id": "1123rwerwe", "name": "item 02"}, {"name": "item 03"}],
result = native.filter(o => !newArray.some(e => e['_id'] === o['_id']));
console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }
关于javascript - 返回新数组的对象数组之间的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50067692/