Подтвердить что ты не робот

Проверьте, имеет ли массив объектов ключевое значение с использованием подчеркивания

Как проверить, имеет ли массив объектов значение ключа с помощью подчеркивания.

Пример:

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

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

Думаю, это нужно сделать с помощью карты:

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

Ответ 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';
} );