使用id号从JavaScript array.object获取值

时间:2015-08-12 02:02:33

标签: javascript

基于下面的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'
            }];

4 个答案:

答案 0 :(得分:3)

(data.filter(function(x) { return x.id == 2 })[0] || {}).full_name;
// => "Eric"

data.filter将仅返回符合给定标准的元素;在这种情况下,id2。既然我们只关心一个元素,我们将只采用第一个找到的元素;但是如果不存在,.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
}