使用下划线检查对象数组是否具有键值

时间:2012-05-22 08:23:26

标签: javascript functional-programming underscore.js

如何使用下划线检查对象数组是否具有键值。

示例:

var objects = [
  {id:1, name:'foo'},
  {id:2, name:'bar'}
]

check(objects, {name: foo}) // true

我认为应该使用map:

_.map(objects, function(num, key){ console.log(num.name) });

2 个答案:

答案 0 :(得分:48)

您可以使用some

check = objects.some( function( el ) {
    return el.name === 'foo';
} );
如果函数返回check一次,则

truetrue,否则为false

然而,IE7 / 8不支持。您可以看到垫片的MDN链接。

对于下划线库,它看起来也是如此实现(它是any的别名)。例如:

check = _.some( objects, function( el ) {
    return el.name === 'foo';
} );

答案 1 :(得分:2)

使用find http://underscorejs.org/#find

var check = function (thelist, props) {
    var pnames = _.keys(props);
    return _.find(thelist, function (obj) {
        return _.all(pnames, function (pname) {
            return obj[pname] == props[pname];
        });
    });
};