如何筛选对象的数组属性

How to filter array properties of object?

本文关键字:对象 数组 属性 筛选 何筛选      更新时间:2023-09-26

我有一个看起来像这样的对象:

myObj = {
    1: 
    [
                {
                "name"  : "ringo",
                "passed": true,
                "level" : 2
                },
                {
                "name"  : "paul",
                "passed": true,
                "level" : 3
                },
                {
                "name"  : "john",
                "passed": false,
                "level" : 4
                },
                {
                "name"  : "george",
                "passed": true,
                "level" : 1
                },
    ],
    2: 
    [
                {
                "name"  : "ringo",
                "passed": true,
                "level" : 2
                },
                {
                "name"  : "paul",
                "passed": true,
                "level" : 3
                },
                {
                "name"  : "john",
                "passed": false,
                "level" : 4
                },
                {
                "name"  : "george",
                "passed": true,
                "level" : 1
                },
    ],

}

如何过滤myObj以保持myObj结构(即keys(1,2)和嵌套数组)并返回通过两个测试的数组对象,passed=true和level>3?

使用_.mapObject来维护密钥结构,然后过滤数组。

var result = _.mapObject(myObj,d=> _.filter(d,k=> k.passed && k.level > 3))

https://jsfiddle.net/ro4p4kya/

请注意,您提供的对象返回的结果为零。