我希望仅将ObjArray
的值推入另一个名为Array
的数组中。
var Array = [];
var ObjArray = [{item1 : 'Foo'}, {item2 : 'Bar'}];
// Push Values from ObjArray into Array
pushValues(ObjArray, Array);
预期的输出将是Array
只有['Foo', 'Bar']
谢谢!
edit:对不起。我在问如何将所有值从ObjArray
推送到Array
。
答案 0 :(得分:0)
您可以尝试使用Array.prototype.map()
map()
方法创建一个新数组,其结果是在调用数组中的每个元素上调用提供的函数。
Object.values()
方法返回给定对象自己的可枚举属性值的数组。
由于对象中有单个值,请使用[0]
返回该值。
var ObjArray = [{item1 : 'Foo'}, {item2 : 'Bar'}];
var array = ObjArray.map(i => Object.values(i)[0]);
console.log(array);
使用for...of
和push()
var array = [];
var ObjArray = [{item1 : 'Foo'}, {item2 : 'Bar'}];
for(var i of ObjArray){
array.push(Object.values(i)[0]);
}
console.log(array);
答案 1 :(得分:0)
如果您的对象中包含多个键/值对,则可以将.flatMap()
与Object.values()
组合使用,如下所示:
const objArray = [{a: 'foo', b: 'bar'}, {c : 'baz'}];
const arr = objArray.flatMap(Object.values);
console.log(arr); // ["foo", "bar", "baz"]
但是请注意,.flatMap()
确实有limited browser support,因此,如果需要一些更兼容的内容,可以改用.reduce()
:
const objArray = [{a: 'foo', b: 'bar'}, {c : 'baz'}];
const arr = objArray.reduce((a, o) => [...a, ...Object.values(o)], []);
console.log(arr); // ["foo", "bar", "baz"]