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

Get value from a JavaScript array.object using id number

本文关键字:object 获取 array JavaScript id 编号 使用      更新时间:2023-09-26

基于下面的var data。如果我只有数字2,我如何获得full_name的值?编号2对应于id: 2,全名为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'
            }];
(data.filter(function(x) { return x.id == 2 })[0] || {}).full_name;
// => "Eric"

CCD_ 6将仅返回符合给定标准的元素;在这种情况下id2。由于我们只关心一个元素,所以我们只取第一个找到的元素;但如果不存在,.full_name会给出一个关于full_name没有在undefined上定义的错误,所以我们放入了一个空对象,以防使用|| {}搜索失败。

Amadan的答案可能比我的更好/更防失败,但如果你知道你的对象数组总是包含从Id 0到Id无穷的对象,你也可以用得到它

var wanted = data[number].fullName

ES6提供Array#find,用于查找数组中满足某些条件的第一个元素:

var wanted = data.find(elt => elt.id === 2);

如果你没有这个,有各种各样的polyfill,包括上面引用的页面上的一个。

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
}