javascript - 使用 map 从数组中解构对象?

标签 javascript ecmascript-6

我写了这段简单的代码,它解构了一个对象数组,以从每个键构建新数组。我正在学习 ES6 并想使用解构将其重构为一行代码,但我也不完全理解如何做。

let candles = [{
  open: 1,
  high: 2,
  low: 0.5,
  close: 1.5,
  volume: 200
}];
let open = candles.map(x => x.open);
let high = candles.map(x => x.high);
let low = candles.map(x => x.low);
let close = candles.map(x => x.close);
let volume = candles.map(x => x.volume);

console.log(open, high, low, close, volume);

我认为它应该看起来像这样?

let [open, high, low, close, volume] = candles.map(key => key.value); 

但这显然是错误的! 如果有人能指导我正确的方法,谢谢你的帮助!

最佳答案

这是一个使用 Array.prototype.reduce() 的解决方案:

const candles = [{open: 1, close: 2, low: 3, high: 4, volume: 5}, {open: 6, close: 7, low: 8, high: 9, volume: 10}];

const result = candles.reduce((a, v) => {
  Object.keys(v).forEach(k => (a[k] = a[k] || []).push(v[k]));
  return a;
}, {});

console.log(result);

关于javascript - 使用 map 从数组中解构对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54431923/

相关文章:

node.js - 初始化全局类并使其在整个 Node 应用程序中可用

javascript - 如何修复 Visual Studio 代码上的 IntelliSense?

javascript - html "data-"属性作为 javascript 变量

javascript - 如何使用 javascript 在长字符串中查找 block 并替换

javascript - 什么是等同于 es5 函数声明的 es6 粗箭头

javascript - 在一个表达式中加载和使用 ES6 模块

node.js - Visual Studio Code 无法识别 ES6 语法

javascript - Image.onload 回调触发不一致

javascript - 添加和删​​除类

javascript - 在 onPress React Native 中传递 Props 和 Function