在Javascript中访问存储在数组中的对象

时间:2014-01-02 03:05:18

标签: javascript arrays for-loop

我正在尝试使用myArray的对象值创建一个新数组。我的代码返回newArray,同时存储了两个对象,但我仍然坚持如何获取'值'并将它们放入数组中。我习惯于对象上的for-in,但不确定当它们存储在数组中时如何访问对象。

var myArray = [{first: 'michael', last: 'jordan'}, {first: 'brett', last: 'favre'}];
var myFunc = function (values) {
    newArray = [];
    for (var i = 0; i < values.length; i += 1) {
        newArray.push(values);
    }
    return newArray;
}

3 个答案:

答案 0 :(得分:4)

试试这个:

var myFunc = function (values) {
    newArray = [];
    for (var i = 0; i < values.length; i += 1) {
        for(var e in values[i]) {
            newArray.push(values[i][e]);
        }
    }
    return newArray;
}

Demonstration

请注意,此方法是“浅层”的 - 也就是说,它只会获得一级深度的值。如果您的结构类似[{foo:{bar:'baz'}}],则结果为[{bar:'baz'}]

答案 1 :(得分:2)

考虑这个例子。

var array = ['a','b','c','d'];

'a'的索引是0
'b'的索引是1
等等......

因此:

array[0] = 'a'



下一个例子:

var array = [ { foo: 'bar' }, { hello: 'world' } ];

第一个对象的索引是0
第二个对象的索引是1

因此:

array[0] = { foo: 'bar' }

要访问该对象的属性,您可以执行以下操作:

array[0]['foo'] = 'bar';



所以,当这个对象在一个数组中时,你可以这样做,迭代一个对象的成员:

var array = [ { foo: 'bar' }, { hello: 'world' } ],
    newArray = [];

var i, len = array.length;

for( i=0; i<len; i++ ) {

    for ( e in array[i] ) {

        newArray.push(array[i][e]);

    }

}

<强>输出:      newArray = ['bar','world'];

答案 2 :(得分:1)

此示例使用相对较新的Object.keys()Array.reduce()

var values = myArray.reduce(function(prev, current) {
    return prev.concat(Object.keys(current).map(function(key) { 
        return current[key]; 
    }));
}, []);