繁体   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