2017-02-09 3 views
0

Я поражен тем, что получаю правильный объект для моего кода javascript. У меня есть 2 массива.Найти объект из массива объектов, где ключ из другого массива

var filters = [{"name":"hello","value":"xyz"},{"name":"hello2","value":"abc"}] 
var keys = ["hello","hello2"] 

Я хочу найти объект, где имя «привет». Я пытаюсь с underscore.js

var selectedObj = _.findWhere(filters , { name: ??? }); 

Я не могу передать "привет"/ключ [0] непосредственно. Я должен использовать массив ключей, чтобы заполнить «???».

Пожалуйста, помогите.

Спасибо заранее.

+0

Просто '_.findWhere (фильтры, {name: keys [0]});' – dfsq

+0

Как вы хотите, чтобы это сработало? Что бы вы хотели передать? Это можно легко настроить на заказ. –

ответ

0

Использование _.find вместо findWhere:

var result = []; 
_.each(keys, function (key) { 
    _.find(filters, function (item) { 
     //loop through array , check key and return object 
     if (key === item.name) 
      result.push(item); 
    }); 
}); 

Они похожи, но findWhere предназначен для особых случаев, когда вы хотите, чтобы соответствовать пары ключ-значение (не полезные в вашем сценарии, как она включает в себя вложенные объекты). Поиск более общий, потому что он позволяет вам использовать функцию в качестве предиката.

+0

Спасибо. Я был немного смущен для подключения массивов объектов и строк. – usr2508

Смежные вопросы