在对象数组中查找特定键/值,并在该对象中打印出另一个键/值

时间:2015-11-26 17:09:57

标签: javascript jquery api world-of-warcraft battlenet-api

我有一个$ .getJSON调用的响应。现在我想选择"选择":true的对象的name属性,并将其打印到id为charTitle的div。

"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 个答案:

答案 0 :(得分:1)

您可以通过简单的循环实现此目的:

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

Example fiddle

或者使用jQuery&#39; $.each()

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

请注意,如果数组中的多个对象selected设置为true,则需要使用append()代替text()来设置div的内容{1}},否则将覆盖之前的值。

答案 1 :(得分:0)

使用下划线,您可以使用

var titles = ...
_.findWhere(titles, {selected: true});

请参阅http://underscorejs.org/#findWhere

答案 2 :(得分: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>