2015-11-26 2 views
-1

У меня есть ответ от вызова $ .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 
    }] 
+0

попробуйте использовать underscore.js http://underscorejs.org/ – pwilmot

ответ

1

Вы можете добиться этого с помощью простого цикла:

for (var i = 0; i < obj.titles.length; i++) { 
    if (obj.titles[i].selected) { 
     $('#charTitle').text(obj.titles[i].name); 
    } 
} 

Example fiddle

Или с JQuery-х $.each():

$.each(obj.titles, function(i, title) { 
    if (title.selected) 
     $('#charTitle').text(title.name);   
}); 

Обратите внимание, что если у вас есть несколько объектов в массиве с selected набор для true вам нужно будет использовать append() вместо text(), чтобы установить содержимое div, в противном случае предыдущее значение будет перезаписано.

+0

Большое вам спасибо! Я никогда не понимал, что могу пропустить все это и просто искать выбранный/истинный, а затем запустить код. Теперь, чтобы увидеть силу петель! :) –

0

Попробуйте использовать 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>