javascript - 在 Javascript 中展平对象数组的快速方法

标签 javascript

我有一个生成的对象数组,如下所示:

[ 
  {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)正确的数组格式。

最佳答案

您可以简单地使用 reduceObject.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/

相关文章:

javascript - 将数据从子 Controller 推送到父 Controller [angularjs]

javascript - 使用 CSS3 和 Javascript 创建一个硬币动画,就像神庙逃亡中的动画一样

javascript - angularJs <ng-repeat> 用于加载 json

javascript - 调用Array.map()中的类方法

javascript - 同时隐藏和显示bootstrap 4 modal会隐藏浏览器的滚动条

javascript - iPad 上的 Bootstrap 3 下拉列表无法正常工作

javascript - Twitter 分享 encodeURIcomponent 奋斗

javascript - 下拉菜单几乎可以工作,但并不完美

javascript - HTML 元素显示 :initial or display:none changing upon checkbox state

javascript - 导入 Json 格式的值以使用 Chart.js 创建条形图