[
{"ID":"5","Name":"Jay"},
{"ID":"30","Name":"Sharon"},
{"ID":"32","Name":"Paul"}
]
所以我有这种JSON。
我需要轻松提供所需密钥的值。 例如:
等。这样做的正确方法是什么?
答案 0 :(得分:5)
迭代数组并检查ID是否匹配
function getById(id) {
var O = null;
for (var i=0; i<arr.length; i++) {
if ( arr[i].ID == id ) return O = arr[i];
}
return O;
}
getById('30'); // returns {"ID":"30","Name":"Sharon"}
或在较新的浏览器中:
function getById(arr, id) {
return arr.filter(function(o) { return o.ID == id });
}
答案 1 :(得分:3)
var searchId = "30";
for(var i = 0; i < json.length; i++)
{
if(json[i].ID == searchId)
{
// Found it.
//
break;
}
}
答案 2 :(得分:2)
如果ID是唯一的,并且您经常需要经常这样做,那么您可能希望将您的集合转换为ID为关键的键/值对。
var byId = data.reduce(function(res, obj) {
res[obj.ID] = obj;
return res
}, {});
现在您只需使用ID来查找对象。
var target = byId["30"];
答案 3 :(得分:1)
你可能只是写一些东西来循环它。
var data = [ {"ID":"5","Name":"Jay"},{"ID":"30","Name":"Sharon"}, {"ID":"32","Name":"Paul"} ];
for(var i in data){
if(data[i]["ID"] == 30){
return data[i]["Name"];
}
}
答案 4 :(得分:0)
undersocre.js可以通过一个行代码
找到集合中的对象参考: http://underscorejs.org/#find
<强>代码:强>
var people = [
{"ID":"5","Name":"Jay"},
{"ID":"30","Name":"Sharon"},
{"ID":"32","Name":"Paul"}
];
_.find(people, function(person) { return person.ID === '5'; });
<强> FIDDLE 强>