Скажем, у меня есть объект JS, например:
{categories : [{id:1, name:"foo", items:[{id:1, name="bar"},{id:2,name:"baz"]}]}
Учитывая первую категорию (индекс 0) и идентификатор элемента, я хотел бы иметь возможность найти имя элемента.
В python мы могли бы сделать что-то очень чистое:
x.name for x in categories[0].items where x.id = 1
Каков самый чистый и самый короткий способ выразить это в jQuery/JS?
Используя метод filter
Array
:
categories[0].items.filter( function(x){ return x.id == 1 });
Изменить после редактирования:
найти имя элемента, где x = 1
categories[0].items.filter( function(x){ return x.id == 1 })[0].name;
если вы знаете, что есть только один элемент, или вы хотите только первый, или объединить .filter
с .map
чтобы получить список имен:
categories[0].items.filter( function(x){ return x.id == 1 }).map( function(x){ return x.name })
скрипка: http://jsfiddle.net/6W2qa/1/
categories.forEach( function(cat){ /* get the name like in the example using cat.items.filter(...) */ })