簡體   English   中英

如何使用下划線JS從嵌套數組中刪除對象

[英]How to delete an object from the nested Array using underscore JS

我有嵌套數組,需要根據條件刪除對象。

數組:

grouplist: [
    {
        name: "one",
        optionlist: [
            {
                optionitem: "green"
            },
            {
                optionitem: "red"
            }
        ]
    },
    {
        name: "two",
        optionlist: [
            {
                optionitem: "yellow"
            },
            {
                optionitem: "red"
            },
            {
                optionitem: "blue"
            }
        ]
    },
    {
        name: "three",
        optionlist: [
            {
                optionitem: "green"
            }
        ]
    },
    {
        name: "four",
        optionlist: [
            {
                optionitem: "blue"
            },
            {
                optionitem: "red"
            }
        ]
    }
];

如果optionItem顏色為綠色,則需要將其從數組對象中完全刪除。

這就是我嘗試過的。

var returnedData = _.filter(grouplist, function(n) { 
    return _.some(n.optionlist, function(option){ 
        return option.optionitem!= "green";
    });
});
var returnedData = _.filter(grouplist, function(n){ 
  var containsGreen = _.some(n.optionlist, function(option){ 
    return option.optionitem === "green";
  })
  return !containsGreen;
});
var returnedData = _.reject(grouplist, function(n){ 
  return _.some(n.optionlist, function(option){ 
    return option.optionitem === "green";
  });
});

filter_.filter的問題在於您正在創建一個數組。 如果您只想從現有數組中刪除一個對象而不創建一個新對象,這是一種簡單的原始JS方式,用相同的代碼行數即可:

for (var i = 0, l = grouplist.length; i < l; i++) {
  var foundGreen = grouplist[i].optionlist.some(function (el) {
      return el.optionitem === 'green'; 
  });
  if (foundGreen) grouplist.splice(i, 1); i--; l--;
}

DEMO

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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