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

在Javascript中访问存储在数组中的对象,javascript,arrays,for-loop,Javascript,Arrays,For Loop,我正在尝试使用myArray的对象值创建一个新数组。下面的代码返回存储了两个对象的newArray,但我一直在研究如何获取“值”并将其放入数组中。我习惯于在对象上输入,但不确定当对象存储在数组中时如何访问它们 var myArray = [{first: 'michael', last: 'jordan'}, {first: 'brett', last: 'favre'}]; var myFunc = function (values) { newArray = []; for

我正在尝试使用myArray的对象值创建一个新数组。下面的代码返回存储了两个对象的newArray,但我一直在研究如何获取“值”并将其放入数组中。我习惯于在对象上输入,但不确定当对象存储在数组中时如何访问它们

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;
}
var myArray=[{first:'michael',last:'jordan'},{first:'brett',last:'favre'}];
var myFunc=函数(值){
newArray=[];
对于(变量i=0;i
试试这个:

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;
}
var myFunc=函数(值){
newArray=[];
对于(变量i=0;i

请注意,此方法是“浅”的,也就是说,它只获取一级深的值。如果您的结构类似于
[{foo:{bar:'baz'}]
,那么结果将是
[{bar:'baz'}]

尝试以下方法:

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;
}
var myFunc=函数(值){
newArray=[];
对于(变量i=0;i

请注意,此方法是“浅”的,也就是说,它只获取一级深的值。如果您有一个类似于
[{foo:{bar:'baz'}}]
的结构,那么结果将是
[{bar:'baz'}]

考虑这个例子

var array = ['a','b','c','d'];
“a”的索引为0
“b”的索引为1
等等……

因此:

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


下一个例子:

var array = [ { foo: 'bar' }, { hello: 'world' } ];
第一个对象的索引为0
第二个对象的索引为1

因此:

array[0] = 'a'
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]);

    }

}
var数组=[{foo:'bar'},{hello:'world'}],
newArray=[];
变量i,len=array.length;
对于(i=0;i考虑这个例子

var array = ['a','b','c','d'];
“a”的索引为0
“b”的索引为1
等等……

因此:

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


下一个例子:

var array = [ { foo: 'bar' }, { hello: 'world' } ];
第一个对象的索引为0
第二个对象的索引为1

因此:

array[0] = 'a'
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]);

    }

}
var数组=[{foo:'bar'},{hello:'world'}],
newArray=[];
变量i,len=array.length;

对于(i=0;i此示例使用相对较新的
Object.keys()
Array.reduce()


此示例使用相对较新的
对象.keys()
数组.reduce()


预期输出是什么?
[“迈克尔”、“乔丹”、“布雷特”、“法夫尔”]
?预期输出是什么?
[“迈克尔”、“乔丹”、“布雷特”、“法夫尔”]
?我明白了,谢谢。我是否总是需要编写for-in循环才能访问数组中的对象?@jstone-Um不,如果您提前知道要获取的属性是什么,您可以执行
newArray.push(值[I]。首先,值[I]。最后)
而不是整个内部循环。我看到它在工作,谢谢。我是否总是需要编写for-in循环才能访问数组中的对象?@jstone-Um不,如果您提前知道要获取的属性是什么,您可以执行
newArray.push(值[I]。首先,值[I]。最后)
而不是整个内部循环。