为了账号安全,请及时绑定邮箱和手机立即绑定

根据条件从数组中删除对象数组

根据条件从数组中删除对象数组

吃鸡游戏 2021-12-02 10:26:54
我有如下 json 数组,我需要根据以下条件进行过滤例如:过滤并获得包含“sad”的结果“Attribute1”例如:过滤并获得“Attribute2”的结果“SubAttribute1”包含“tes”所有的组合。例如:过滤并获得包含“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"        }]    }]
查看完整描述

1 回答

?
泛舟湖上清波郎朗

TA贡献1818条经验 获得超3个赞

你可以做:


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; }


查看完整回答
反对 回复 2021-12-02
  • 1 回答
  • 0 关注
  • 260 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信