[英]Removing object array from array based on condition
我有如下 json 数组,我需要根据以下条件进行过滤
eg:过滤并得到包含“sad”的结果“Attribute1”
eg:过滤并得到“Attribute2”的结果“SubAttribute1”包含“tes”
所有的结合。
eg:过滤并得到包含“sad”的结果“Attribute1”
或“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"
}]
}
]
你可以做:
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; }
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.