javascript - 如何根据javascript中的多个选项过滤嵌套数据?
问题描述
我有 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。
解决方案
您可以简单地使用Array.filter()
withArray.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);
推荐阅读
- android - 数据库sqlite。更新不丢失数据
- wordpress - Wordpress 按多个元键排序
- mysql - 选择并求和具有相似行的所有记录满足条件的唯一行
- algorithm - 最大流算法运行时间
- android - 错误在使用 nativescript-contacts 插件时无法解析 com.android.support:appcompat-v7:27.0.1
- ios - 快速替换索引处的字符串值
- scala - Intellij 2018.3.1 无法从 SBT 项目转储项目结构
- r - 使用 R 进行闪亮加载测试
- java - 如何使用限制 = n 的递归 java 打印奇数
- javascript - JavaScript 从非 ES6 类覆盖到 ES6 类