基于下面的var data
。如果我拥有的是full_name
,我怎样才能获得2
值?数字2对应id: 2
,full_name为Eric
var data = [{
id: 0,
full_name: 'None',
gravatar_url: 'http://gravatar.com/avatar/31b64e4876d603ce78e04102c67d6144?s=80'
}, {
id: 1,
full_name: 'John',
gravatar_url: 'http://gravatar.com/avatar/31b64e4876d603ce78e04102c67d6144?s=80'
}, {
id: 2,
full_name: 'Eric',
gravatar_url: 'http://gravatar.com/avatar/31b64e4876d603ce78e04102c67d6144?s=80'
}, {
id: 3,
full_name: 'Larry',
gravatar_url: 'http://gravatar.com/avatar/31b64e4876d603ce78e04102c67d6144?s=80'
}, {
id: 4,
full_name: 'Rick',
gravatar_url: 'http://gravatar.com/avatar/31b64e4876d603ce78e04102c67d6144?s=80'
}, {
id: 5,
full_name: 'John',
gravatar_url: 'http://gravatar.com/avatar/31b64e4876d603ce78e04102c67d6144?s=80'
}, {
id: 6,
full_name: 'Eric',
gravatar_url: 'http://gravatar.com/avatar/31b64e4876d603ce78e04102c67d6144?s=80'
}, {
id: 7,
full_name: 'Larry',
gravatar_url: 'http://gravatar.com/avatar/31b64e4876d603ce78e04102c67d6144?s=80'
}, {
id: 8,
full_name: 'Rick',
gravatar_url: 'http://gravatar.com/avatar/31b64e4876d603ce78e04102c67d6144?s=80'
}, {
id: 9,
full_name: 'John',
gravatar_url: 'http://gravatar.com/avatar/31b64e4876d603ce78e04102c67d6144?s=80'
}, {
id: 10,
full_name: 'Eric',
gravatar_url: 'http://gravatar.com/avatar/31b64e4876d603ce78e04102c67d6144?s=80'
}, {
id: 11,
full_name: 'Larry',
gravatar_url: 'http://gravatar.com/avatar/31b64e4876d603ce78e04102c67d6144?s=80'
}, {
id: 12,
full_name: 'Rick',
gravatar_url: 'http://gravatar.com/avatar/31b64e4876d603ce78e04102c67d6144?s=80'
}];
答案 0 :(得分:3)
(data.filter(function(x) { return x.id == 2 })[0] || {}).full_name;
// => "Eric"
data.filter
将仅返回符合给定标准的元素;在这种情况下,id
为2
。既然我们只关心一个元素,我们将只采用第一个找到的元素;但是如果不存在,.full_name
会在full_name
上没有定义undefined
时出错,所以我们放入一个空对象,以防使用|| {}
进行搜索失败。
答案 1 :(得分:1)
Amadan的答案很可能是比我的更好/更多的失败证明,但如果你知道你的对象数组将始终包含从Id 0到Id无限的对象,你也可以用
来获取它var wanted = data[number].fullName
答案 2 :(得分:1)
ES6提供Array#find
,以查找满足某些条件的数组中的第一个元素:
var wanted = data.find(elt => elt.id === 2);
如果您没有此功能,则会有多种填充,包括上面引用的页面上的一个。
答案 3 :(得分:0)
function myQuery(array, id){
for(i in array){
if(array[i].id === id){
console.log(data[i].full_name);
return data[i].full_name;
}
}
}
myQuery(data, 2)
如果你保持你的ID等于数组中的位置,你可以这样做。
function myQuery(id){
return array[id].full_name
}