[英]Using lodash to compare and remove an object from an array
我正在嘗試使用lodash比較對象的兩個數組並返回兩者之間的差,然后將其添加到原始數據集中。 原因是,新數據將包含與原始數據相同的數據。 例如,我在orgData
有3個對象,當我請求newData
,它將包含相同的orgData
和一個以上的對象。
var orgData = [{
"id": 1000,
"title": "First item"
}, {
"id": 1001,
"title": "Second item"
}];
var newData = [{
"id": 1000,
"title": "First item"
}, {
"id": 1001,
"title": "Second item"
}, {
"id": 1002,
"title": "Third item"
}];
我唯一比較的分隔符是唯一的id
。 我嘗試了以下操作,但是收到的錯誤是“無法讀取'id'undefined的屬性”,這很有意義。
_.filter(orgData, function(o, x) {
return o.id !== newData[x].id;
}).forEach(function(x) {
orgData.push(x);
});
在單獨的數據結構中跟蹤ID:
var orgDataIds = [];
_.each(orgData, function(value) {
orgDataIds.push(value.id);
})
檢查newData中每個對象的ID,然后在ids數組中找不到對應的ID時,將該對象添加到orgData中:
_.each(newData, function(value) {
var id = value.id;
if (orgDataIds.indexOf(id) === -1) {
orgDataIds.push(id);
orgData.push(value);
}
})
但是,當您要從數組中刪除對象時,對我來說還不清楚。 您打算采用兩個數組的交集嗎?
var orgData = [{{“ id”:1000,“ title”:“第一項”},{“ id”:1001,“ title”:“第二項”}];
var newData = [{“ id”:1000,“ title”:“第一項”},{“ id”:1001,“ title”:“第二項”},{“ id”:1002,“ title”:“第三項“},{” id“:1003,” title“:”第四項“}];
var newArray = _.union(orgData,newDate)
console.log(JSON.stringify(newArray))//這將返回這兩個數組的並集
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.