我有一个生成的对象数组,如下所示:
[
{obj1: {
key: 'value'
}},
{obj2: {
key: 'value2'
}},
{obj3: {
key: 'value3'
}}
]
我想展平数组,输出如下:
[
{
key: 'value'
},
{
key: 'value2'
},
{
key: 'value3'
}
]
我使用 for 循环执行此操作,该循环有效,但数组的大小会相当大,想知道是否有更有效的方法来执行此操作?
for (var key in array) {
let obj = array[key];
for (var key in obj) {
newArray.push(obj[key]);
}
}
output:
newArray: [
{
key: 'value'
},
{
key: 'value2'
},
{
key: 'value3'
}
]
我正在寻找最简单的方法,也欢迎 ES6 或 Lodash 提供解决方案。
已更新以反射(reflect)正确的数组格式。
最佳答案
您可以简单地使用 reduce和 Object.values
let arr = [{obj1: {key: `value`}},{obj2: {key: `value2`
}},{obj3: {key: `value3`}}]
let op = arr.reduce((op,e)=> op.concat(Object.values(e)),[])
console.log(op)
当您关心速度时,可以使用简单的 for
循环。
let arr = [{obj1: {key: `value`}},{obj2: {key: `value2`
}},{obj3: {key: `value3`}}]
let op = []
for(let i=0; i<arr.length; i++){
let values = Object.values(arr[i])
op = op.concat(values)
}
console.log(op)
关于javascript - 在 Javascript 中展平对象数组的快速方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55324421/