繁体   English   中英

根据条件从数组中删除 object 数组

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM