簡體   English   中英

根據 object 的數組屬性中的值過濾數組中的特定對象

[英]Filtering specific objects in an array based on values inside an array property of the object

我正在嘗試過濾數組中的對象,這些對象包含數組屬性中的特定值。 例如,這是我的對象數組:

[
  {_id: 1, value: ['Row', 'Column']}, 
  {_id: 2, value: []}, 
  {_id: 3, value: ['Row']}, 
  {_id: 4},
  {_id: 5, value: ['Column']}
]

我需要它返回值數組中帶有“行”的所有對象,即結果應該是:

[
  {_id: 1, value: ['Row', 'Column']}, 
  {_id: 3, value: ['Row']},
]

這是我的方法,但它返回 null:

findRowValues() {
    let groupObj = [
       {_id: 1, value: ['Row', 'Column']}, 
       {_id: 2, value: []}, 
       {_id: 3, value: ['Row']}, 
       {_id: 4},
       {_id: 5, value: ['Column']}
    ];
    
    return groupObj.filter(function (obj) {
          return (
            obj.value &&
            obj.value.find(o => { o === 'Row' })
          )
    });
}

這是由於find回調中的{ }造成的。 可以刪除這些以進行隱式返回,或者您需要顯式使用return關鍵字。 由於箭頭 function,我使用了隱式返回。

 let groupObj = [ {_id: 1, value: ['Row', 'Column']}, {_id: 3, value: []}, {_id: 5, value: ['Row']}, {_id: 7}, {_id: 8, value: ['Column']} ]; function findRowValues(groupObj) { return groupObj.filter(function (obj) { return ( obj.value && obj.value.find(o => o === 'Row' ) ) }); } console.log(findRowValues(groupObj))

對於return關鍵字 - obj.value.find(o => {return o === 'Row'} )

使用destructuringincludes方法

 function findRowValues() { const groupObj = [ { _id: 1, value: ["Row", "Column"] }, { _id: 2, value: [] }, { _id: 3, value: ["Row"] }, { _id: 4 }, { _id: 5, value: ["Column"] }, ]; return groupObj.filter(({ value = [] }) => value.includes("Row")); } console.log(findRowValues())

暫無
暫無

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

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