如何使用下划线检查对象数组是否具有键值。
示例:
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) });
答案 0 :(得分:48)
您可以使用some
。
check = objects.some( function( el ) {
return el.name === 'foo';
} );
如果函数返回check
一次,则 true
为true
,否则为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];
});
});
};