我有以下json数组,我需要根据以下条件进行过滤
例如:筛选并获取结果“ Attribute1”,其中包含“悲伤”
例如:筛选并获取结果,“ Attribute2”的“ SubAttribute1”包含“ tes”
所有的组合。
例如:筛选并获取结果“ Attribute1”,其中包含“ sad”
或“ Attribute2”的“ SubAttribute1”包含“ tes”
或“ Attribute3”的“ SubAttribute2”包含“ tes”
注意:可以通过纯JavaScript或lodash(首选)完成。
[
{
"Attribute1": [
"sada",
"dasa"
],
"Attribute2": [{
"SubAttribute1": "Test",
"SubAttribute2": "sdasd"
}, {
"SubAttribute1": "sdsadsadas",
"SubAttribute2": "sdsad"
}],
"Attribute3": [{
"SubAttribute1": "sdasd",
"SubAttribute2": "dsa"
}, {
"SubAttribute1": "sadasd",
"SubAttribute2": "sadas"
}]
},
{
"Attribute1": [
"ass",
"sd"
],
"Attribute2": [{
"SubAttribute1": "dsad",
"SubAttribute2": "xcxc"
}, {
"SubAttribute1": "erew",
"SubAttribute2": "errer"
}],
"Attribute3": [{
"SubAttribute1": "sdsdaasd",
"SubAttribute2": "sdsa"
}, {
"SubAttribute1": "das",
"SubAttribute2": "sad"
}]
}
]
答案 0 :(得分:0)
您可以这样做:
const data = [{"Attribute1": ["sada","dasa"],"Attribute2": [{"SubAttribute1": "Test","SubAttribute2": "sdasd"}, {"SubAttribute1": "sdsadsadas","SubAttribute2": "sdsad"}],"Attribute3": [{"SubAttribute1": "sdasd","SubAttribute2": "dsa"}, {"SubAttribute1": "sadasd","SubAttribute2": "sadas"}]},{"Attribute1": ["ass","sd"],"Attribute2": [{"SubAttribute1": "dsad","SubAttribute2": "xcxc"}, {"SubAttribute1": "erew","SubAttribute2": "errer"}],"Attribute3": [{"SubAttribute1": "sdsdaasd","SubAttribute2": "sdsa"}, {"SubAttribute1": "das","SubAttribute2": "sad"}]}]
/**
Combination of all.
eg: Filter and get result "Attribute1" which contains "sad"
OR "SubAttribute1" of "Attribute2" contains "tes"
OR "SubAttribute2" of "Attribute3" contains "tes"
*/
const result = data.filter(
obj => /sad/.test(obj.Attribute1.join(','))
|| obj.Attribute2.find(obj => /tes/.test(obj.SubAttribute1))
|| obj.Attribute3.find(obj => /tes/.test(obj.SubAttribute2))
)
console.log(result)
.as-console-wrapper { max-height: 100% !important; top: 0; }