我有JSON数据,其结构如下:
data = [
{
"id": 100,
"floorplans": [
{
"bhk": 1,
...some other fields
},
{
"bhk": 3,
...some other fields
},
{
"bhk": 2,
...some other fields
}
]
},
{
"id": 200,
"floorplans": [
{
"bhk": 1.5,
...some other fields
},
{
"bhk": 1,
...some other fields
},
{
"bhk": 2.5,
...some other fields
}
]
},
{
"id": 300,
"floorplans": [
{
"bhk": 1,
...some other fields
},
{
"bhk": 4,
...some other fields
},
{
"bhk": 2,
...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。
答案 0 :(得分:2)
您可以简单地将Array.filter()
与Array.some()
和Array.includes()
结合使用,以过滤出临时数组中存在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, "floorplans": [ { "bhk": 1 }, { "bhk": 4 }, { "bhk": 2 } ] }];
let temp = [2, 3];
let filterData = data.filter(a => a.floorplans.some(e => temp.includes(e.bhk)));
console.log(filterData);