如何基于javascript中的多个选项过滤嵌套数据?

前端之家收集整理的这篇文章主要介绍了如何基于javascript中的多个选项过滤嵌套数据? 前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我有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.

最佳答案
您可以简单地将Array.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);
原文链接:https://www.f2er.com/js/531153.html

猜你在找的JavaScript相关文章