簡體   English   中英

使用lodash比較和刪除數組中的對象

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM