![](/img/trans.png)
[英]filtering an array of objects based on another array of values, returning an empty list
[英]filtering an array of objects based on another array returning new array javascript
我有一个对象数组,我们可以调用 arrayOne 并希望使用 arrayTwo 检查它是否包含与 ArrayOne 匹配的任何字符串,它将返回具有匹配数组的新数组。 我可以使用 ES6 做的最好的方法是什么?
例子 :
ArrayOne = [
{
"sessionId":1,
"name":"session name 1",
"types":[
"type1",
"type 2"
],
"tracks":[
"track1",
"track 2"
]
},
{
"sessionId":2,
"name":"session name 2",
"types":[
"track 3",
"type 2"
],
"tracks":[
"track 3",
"track 2"
]
}
]
arrayTwo = ["track 3"] // or it can be ["track&3", "Type 2"] which it will return both array
返回
newArray = [ {
"sessionId":2,
"name":"session name 2",
"types":[
"track 3",
"type 2"
],
"tracks":[
"track 3",
"track 2"
]
}]
我尝试了以下方法:
arrayOne.filter((obj) => {
Object.keys(obj).forEach((key) => {
if (obj[key].toString().indexOf(arrayTwo) !== -1) {
this.setState({
newArray: [obj]
})
}
});
});
如果你只关心轨道数组,你可以做这样的事情:
ArrayOne.filter((obj) => arrayTwo.some(x => obj.tracks.includes(x)));
如果 arrayTwo 包含某个元素 x 使得 obj.tracks 具有匹配元素,则 .some() 返回 true。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.