0

在我的数组中,我得到多个对象,每个对象都包含多个子节点,其中有一个子节点有一个带有子节点的数组,使用该数组子节点的值如何获得我需要的对象..?

我正在使用 underscore.js 来获得这个,但我没有得到价值.. 请任何人帮助我正确的方法来获得我使用 uderscore.js 描述的内容..

这是我的示例并尝试:

var obj = [
    {
        name : true,
        deleted : false,
        updated : [
            {
                upStatus : true
            }
        ]

    },
    {
        name : true,
        deleted : false,
        updated : [
            {
                upStatus : false
            }
        ]
    },
    {
        name : true,
        deleted : false,
        updated : [
            {
                upStatus : false
            }
        ]
    },
    {
        name : true,
        deleted : false,
        updated : [
            {
                upStatus : false
            }
        ]
    },
    {
        name : true,
        deleted : false,
        updated : [
            {
                upStatus : false
            }
        ]
    }
]

    var hws = _.select(obj,function(val,key){    
        return val.updated.upStatus == false;
    });

    console.log (hws); // i am not getting any value. since i am not able to find the array value..

现场演示

4

3 回答 3

2

只需将_.findor_.findWhere用于子数组,它们都会在第一个满足的条目上返回,undefined如果没有找到匹配项,或者如果列表为空,则返回:

var hws = _.select(obj,function(val,key){    
    return _.find(val.updated, function(status) {
         return status.upStatus == false;
    })
});

这是一个小提琴

于 2013-10-25T13:54:05.983 回答
0

您需要使用return val.updated[0].upStatus == false;asupdated属性是一个数组,您必须获取它的第一个元素

演示

于 2013-10-25T13:51:15.063 回答
0

updated属性包含一个对象数组,而不是具有该upStatus属性的单个对象。所以使用

function(val) {    
    return !val.updated.length || !val.updated[0].upStatus;
}

作为过滤器表达式。如果您需要检查数组中的所有对象,请使用某种someevery检查它们:

function(val) {    
    return _.some(val.updated, function(update) {
        return !update.upStatus;
    });
}
于 2013-10-25T13:52:53.047 回答