我有一个保存此数据的变量:
{"main":[
{"id":"123","name":"name 1"},
{"id":"234","name":"name 2"}
]
}
我知道要搜索的数据的ID。
我的问题是......我如何搜索id 234的名称(例如)是上面的数据?
答案 0 :(得分:7)
filter()
方法创建一个新数组,其中包含通过所提供函数实现的测试的所有元素。
var object = {
"main": [{
"id": "123",
"name": "name 1"
}, {
"id": "234",
"name": "name 2"
}]
};
var toFind = "234";
var filtered = object.main.filter(function(el) {
return el.id === toFind;
});
console.log(filtered);
如果array
中只有一个对象,则可以首选for-loop
break
。
var object = {
"main": [{
"id": "123",
"name": "name 1"
}, {
"id": "234",
"name": "name 2"
}]
};
var toFind = "234";
for (var i = 0, len = object.main.length; i < len; i++) {
if (object.main[i].id === toFind) {
break;
}
}
console.log(object.main[i].name);
答案 1 :(得分:2)
如果ID是唯一的,您可以使用find()
。
var data = {"main":[
{"id":"123","name":"name 1"},
{"id":"234","name":"name 2"}
]
}
var name = data.main.find(function(o) {
return o.id == '234';
}).name;
console.log(name)
答案 2 :(得分:2)
在ES5环境中,如果只期望一个结果,则可以使用Array#some
。
[value="SEL2"]
&#13;
如果您预期有多个结果集,最好使用Array#filter
var data = { "main": [{ "id": "123", "name": "name 1" }, { "id": "234", "name": "name 2" }] },
result;
data.main.some(function (a) {
if (a.id === '234') {
result = a;
return true;
}
});
console.log(result);
&#13;
在ES6环境中,您可以使用Array#find
作为第一个找到的元素,但如果还有更多要查找的内容,请使用var data = { "main": [{ "id": "123", "name": "name 1" }, { "id": "234", "name": "name 2a" }, { "id": "234", "name": "name 2" }] },
result = data.main.filter(function (a) {
return a.id === '234';
});
console.log(result);
。
Array#filter
&#13;
答案 3 :(得分:0)
您可以使用Array.prototype.filter查找所有匹配的元素,并将它们作为新数组返回。
要查找第一场比赛,您可以使用Array.prototype.find(ES2015 +)。