簡體   English   中英

在lodash中使用嵌套屬性從數組中刪除對象

[英]Remove object from array with a nested property in lodash

我有這個數組:

var myArray = [{state: {name: 'object #1'}},
               {state: {name: 'object #2'}},
               {state: {name: 'object #3'}}];

我試圖用lodash刪除state.name'object#1'的對象 目前,我正在這樣做:

_.remove(myArray, {
        name: 'object #1'
    });

但這不起作用。 最初,我是這樣嘗試的,這對我來說是更明顯的方法:

_.remove(myArray, {
        state.name: 'object #1'
    });

但這也不起作用,我的JS驗證器抱怨其中的點表示法。

您如何在lodash中做到這一點?

_.remove具有謂詞功能。 您可以這樣操作:

_.remove(myArray, function(arg) {
    return arg.name == 'object #1';
});

在純js中,使用Array#filter

 var myArray = [{state: {name: 'object #1'}}, {state: {name: 'object #2'}}, {state: {name: 'object #3'}}]; myArray = myArray.filter(v => v.state.name != 'object #1'); console.log(myArray); 

或使用Array#forEach

 var myArray = [{state: {name: 'object #1'}}, {state: {name: 'object #2'}}, {state: {name: 'object #3'}}], newArr = []; myArray.forEach(v => v.state.name !== 'object #1' ? newArr.push(v) : null); console.log(newArr); 

您可以將lodash 拒絕matchProperty速記一起使用。

var result = _.reject(myArray, ['state.name', 'object #1']);

 var myArray = [{ state: { name: 'object #1' } }, { state: { name: 'object #2' } }, { state: { name: 'object #3' } } ]; var result = _.reject(myArray, ['state.name', 'object #1']); console.log(result); 
 body > div { min-height: 100%; top: 0; } 
 <script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.js"></script> 

您可以像這樣使用_.remove的回調:

_.remove(myArray, function(o) {
    return o.name === 'object #1';
});

或不久使用以下箭頭功能

_.remove(myArray, o => o.name === 'object #1');

如果可以在計划JS中使用lodash,為什么還要使用lodash?

myArray = myArray.filter(function(element) {
  return element.state.name !== 'object #1';
})

如果需要從現有數組中刪除元素,則可以使用Array.prototype.splice()Array.prototype.findIndex()

 var myArray = [{state: {name: 'object #1'}}, {state: {name: 'object #2'}}, {state: {name: 'object #3'}}]; myArray.splice(myArray.findIndex(({state:{name}}) => name === "object #1"), 1); console.log(myArray); 

暫無
暫無

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

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