簡體   English   中英

數組中的Javascript過濾器對象

[英]Javascript filter objects in in array

我遇到了挑戰,我想返回一個包含對象的數組,其中控件數組在其子對象的“ value”屬性中具有值。

除此之外,它還應該刪除沒有值的控件數組中的對象

const data = [
      {
        'groupName': '1',
        'controls': [
          {'value': ''},
          {'value': ''}
        ]
      },
      {
        'groupName': '2',
        'controls': [
          {'value': ''},
          {'value': '2'}
        ]
      }
    ];

    const result = data.filter(cl => {
      return cl.controls.some(r => {
        return r.value !== '';
      });
    });

    console.log(result);

結果是這樣

[
  {
    'groupName': '2',
    'controls': [
      {'value': ''},
      {'value': '2'}
    ]
  }
];

但我希望是這樣

   [
      {
        'groupName': '2',
        'controls': [
          {'value': '2'}
        ]
      }
    ];

使用嵌套的filter()而不是some()

 const data = [{groupName:"1",controls:[{value:""},{value:""}]},{groupName:"2",controls:[{value:""},{value:"2"}]}];; const result = data.filter(cl => { cl.controls = cl.controls.filter(r => { return r.value !== ''; }); return cl.controls.length }); console.log(result); 

注意:它會改變原始數組。 您可以使用Array.from(data).filter(...)避免它

暫無
暫無

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

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