匹配非字符串属性与Underscore.js的位置

时间:2013-11-12 22:08:46

标签: javascript underscore.js

下划线是否可以根据包含嵌套对象的属性匹配列表中的项目?

例如,在MRSS Feed上使用热门node-feedparser会生成与此类似的条目:

var item = {
    // a bunch of fields
    'ooyala:metadata': [
        {
            '@': {
                name: 'guid'
            },

            '#': 'a string'
        },
        {
            '@': {
                name: 'genre'
            },

            '#': 'music videos'
        }
    ]
}

我需要一种从项目集合中提取GUID的方法,所以我的第一次尝试就是:

var firstAttempt = _.where(item['ooyala:metadata'], { '@': { name: 'guid' } })

返回一个空集。

有没有办法根据下划线中的嵌套对象获取集合的成员?

1 个答案:

答案 0 :(得分:0)

您可以使用filter,它将函数作为其第二个参数。

var correctWay = _.filter(item['ooyala:metadata'], function(item) {
    return item['@'].name === "guid";
});

我试图找到一种方法将函数传递给where并且没有意识到它是filter的常见用例的简写。