如何以最有效的方式(通过Underscore或纯JS)查找在其数组属性之一中具有特定值的项目集合?

例如。:

var collection = [
    {
        name: 'item 1',
        tags: [
            'tag-1',
            'tag-2',
            'tag-3'
        ]
    },
    {
        name: 'item 2',
        tags: [
            'tag-2',
            'tag-4',
            'tag-5'
        ]
    },
    {
        name: 'item 3',
        tags: [
            'tag-1',
            'tag-3',
            'tag-4'
        ]
    }
];


我想获取所有在其tags-3属性中具有tags的项目。

因此,我期望得到:

{
    name: 'item 1',
    tags: [
        'tag-1',
        'tag-2',
        'tag-3'
    ]
},
{
    name: 'item 3',
    tags: [
        'tag-1',
        'tag-3',
        'tag-4'
    ]
}

最佳答案

您可以使用Underscore的filter function进行过滤:

var results = _.filter(collection, function(item) {
    return item.tags.indexOf("tag-3") !== -1;
});


还有ES5的Array#filter(在旧版浏览器中需要填充):

var results = collection.filter(function(item) {
    return item.tags.indexOf("tag-3") !== -1;
});

关于javascript - JS:查找在其数组属性之一中具有特定值的项目的集合,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21684198/

10-12 02:48