Найти конкретный ключ / значение в массиве объектов и распечатать другой ключ / значение в этом объекте
У меня есть этот ответ от вызова $.getJSON. Теперь я хочу выбрать свойство name объекта с помощью "selected": true и распечатать его в div с id charTitle.
"titles": [{
"id": 17,
"name": "Sergeant %s"
}, {
"id": 53,
"name": "%s, Champion of the Naaru"
}, {
"id": 64,
"name": "%s, Hand of A'dal",
"selected": true
}]
3 ответа
Решение
Вы можете достичь этого с помощью простого цикла:
for (var i = 0; i < obj.titles.length; i++) {
if (obj.titles[i].selected) {
$('#charTitle').text(obj.titles[i].name);
}
}
Или с помощью jQuery $.each()
:
$.each(obj.titles, function(i, title) {
if (title.selected)
$('#charTitle').text(title.name);
});
Обратите внимание, что если у вас есть несколько объектов в массиве с selected
установлен в true
вам нужно будет использовать append()
вместо text()
установить содержание div
в противном случае предыдущее значение будет перезаписано.
Попробуйте использовать Array.prototype.filter()
var arr = [{
"id": 17,
"name": "Sergeant %s"
}, {
"id": 53,
"name": "%s, Champion of the Naaru"
}, {
"id": 64,
"name": "%s, Hand of A'dal",
"selected": true
}]
var res = arr.filter(function(val, key) {
return val.selected === true
})[0].name;
$("#charTitle").html(res)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js">
</script>
<div id="charTitle"></div>
Используя подчеркивание, вы можете получить это с
var titles = ...
_.findWhere(titles, {selected: true});