Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何按属性筛选对象数组_Javascript_Arrays_Filtering - Fatal编程技术网

Javascript 如何按属性筛选对象数组

Javascript 如何按属性筛选对象数组,javascript,arrays,filtering,Javascript,Arrays,Filtering,我有一个对象数组,如下所示: finalistsCollection = [ { name: 'Ann' , sections: [{id: '132', name: 'someName'}, {id: '456', name: 'someName'}] }, { name: 'Jack' , sections: [{id: '798', name: 'someName'}] }, { name: 'Morgan', sections: [{id: '456', name

我有一个对象数组,如下所示:

finalistsCollection = [
    { name: 'Ann' , sections: [{id: '132', name: 'someName'}, {id: '456', name: 'someName'}] },
    { name: 'Jack' , sections: [{id: '798', name: 'someName'}] },
    { name: 'Morgan', sections: [{id: '456', name: 'someName'}] },
    { name: 'Billy', sections: [{id: '132', name: 'someName'}, {id: '456', name: 'someName'}]}, 
    { name: 'Monica', sections: [{id: '798', name: 'someName'}] }
]
如何按id值筛选此数组?现在,如果
sections
数组中只有一个对象,我会进行过滤:

filter(directionId) {
     filteredCollection = this.finalistsCollection.filter((item) => item.sections[0].id === directionId
}

我尝试在过滤器之后使用
map()
函数,但它仍然返回整个数组。

您可以在这里使用一个小技巧作为条件:

sections.map(section=>section.id).includes(directionId)
finalitscollection=[
{name:'Ann',部分:[{id:'132',name:'someName'},{id:'456',name:'someName'}]},
{name:'Jack',sections:[{id:'798',name:'someName'}]},
{name:'Morgan',sections:[{id:'456',name:'someName'}]},
{name:'Billy',部分:[{id:'132',name:'someName'},{id:'456',name:'someName'}]},
{name:'Monica',部分:[{id:'798',name:'someName'}]}
]
函数筛选器(directionId){
返回FinallitCollection.filter((项目)=>
item.sections.map(section=>section.id).includes(directionId))
}
console.log(过滤器('798'))
console.log(过滤器('456'))
console.log(过滤器('112'))
此:

希望这有帮助

let finalistsCollection = [
  { name: 'Ann' , sections: [{id: '132', name: 'someName'}, {id: '456', name: 'someName'}] },
  { name: 'Jack' , sections: [{id: '798', name: 'someName'}] },
  { name: 'Morgan', sections: [{id: '456', name: 'someName'}] },
  { name: 'Billy', sections: [{id: '132', name: 'someName'}, {id: '456', name: 'someName'}]}, 
  { name: 'Monica', sections: [{id: '798', name: 'someName'}] }
]

function filter(directionId) {
  return finalistsCollection.filter(item =>
    item.sections.some(x => x.id === directionId)
  );
}

console.log(filter('456'));

使用
filter('456')
filter('456')
应返回一个包含3项的数组。对此表示抱歉。我的回答这能回答你的问题吗?
let finalistsCollection = [
  { name: 'Ann' , sections: [{id: '132', name: 'someName'}, {id: '456', name: 'someName'}] },
  { name: 'Jack' , sections: [{id: '798', name: 'someName'}] },
  { name: 'Morgan', sections: [{id: '456', name: 'someName'}] },
  { name: 'Billy', sections: [{id: '132', name: 'someName'}, {id: '456', name: 'someName'}]}, 
  { name: 'Monica', sections: [{id: '798', name: 'someName'}] }
]

function filter(directionId) {
  return finalistsCollection.filter(item =>
    item.sections.some(x => x.id === directionId)
  );
}

console.log(filter('456'));