我有JSON数据,其结构如下:
data = [
{
"id": 100,"floorplans": [
{
"bhk": 1,...some other fields
},{
"bhk": 3,{
"bhk": 2,...some other fields
}
]
},{
"id": 200,"floorplans": [
{
"bhk": 1.5,{
"bhk": 1,{
"bhk": 2.5,...some other fields
}
]
},{
"id": 300,{
"bhk": 4,...some other fields
}
]
}]
现在我有另一个数组,可以说tempArray = [2,3]现在,我只想从bhk === 2即tempArray [0]或bhk === 3即tempArray [1]的数据数组中过滤那些对象
我不明白如何过滤此类数据?下面的代码不起作用,我找不到任何此类过滤的示例.
码:
var filtered_data = data.filter((val) => {
return val.floorplans.indexOf(tempArray[0]) !== -1;
})
现在,由于tempArray具有2和3个元素,所以我只想显示data [0]和data [2]对象,而不显示data [1],因为data [1]既不包含2也不包含3.
最佳答案
您可以简单地将
原文链接:https://www.f2er.com/js/531153.htmlArray.filter()
与Array.some()
和@L_502_3@一起使用,以过滤出临时数组中存在bhk的数据.
请尝试以下操作:
let data = [ { "id": 100,"floorplans": [ { "bhk": 1 },{ "bhk": 3 },{ "bhk": 2 } ] },{ "id": 200,"floorplans": [ { "bhk": 1.5 },{ "bhk": 1 },{ "bhk": 2.5 } ] },{ "id": 300,{ "bhk": 4 },{ "bhk": 2 } ] }];
let temp = [2,3];
let filterData = data.filter(a => a.floorplans.some(e => temp.includes(e.bhk)));
console.log(filterData);