仅将对象数组的值推入另一个数组

时间:2019-07-27 04:14:43

标签: javascript

我希望仅将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

2 个答案:

答案 0 :(得分:0)

您可以尝试使用Array.prototype.map()

  

map()方法创建一个新数组,其结果是在调用数组中的每个元素上调用提供的函数。

还有Object.values()

  

Object.values()方法返回给定对象自己的可枚举属性值的数组。

由于对象中有单个值,请使用[0]返回该值。

var ObjArray = [{item1 : 'Foo'}, {item2 : 'Bar'}];
var array = ObjArray.map(i => Object.values(i)[0]);
console.log(array);

使用for...ofpush()

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"]