我正在尝试使用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;
}
答案 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;
}
请注意,此方法是“浅层”的 - 也就是说,它只会获得一级深度的值。如果您的结构类似[{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];
}));
}, []);