Проверьте, имеет ли массив объектов ключевое значение с использованием подчеркивания
Как проверить, имеет ли массив объектов значение ключа с помощью подчеркивания.
Пример:
var objects = [
{id:1, name:'foo'},
{id:2, name:'bar'}
]
check(objects, {name: foo}) // true
Думаю, это нужно сделать с помощью карты:
_.map(objects, function(num, key){ console.log(num.name) });
Ответы
Ответ 1
Используйте 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];
});
});
};
Ответ 2
Вы можете использовать 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';
} );