javascript - 转换数据

标签 javascript underscore.js

我有以下数据结构:

const data = [
  {
    name: 'ABC',
    salesData: [
      {
        timestamp: '2017-09-01',
        value: 10
      },
      {
        timestamp: '2017-09-02',
        value: 2
      }
    ]
  },
  {
    name: 'DEF',
    salesData: [
      {
        timestamp: '2017-09-01',
        value: 8
      },
      {
        timestamp: '2017-09-02',
        value: 3
      }
    ]
  }
];

我想将其转换为:

[
  {
    name: 'ABC',
    '2017-09-01': 10,
    '2017-09-02': 2
  },
  {
    name: 'CDE',
    '2017-09-01': 8,
    '2017-09-02': 3
  }
]

我正在尝试使用 Underscore 的 Chain 和 Map,但我感到很困惑。到目前为止,我有以下内容,不确定如何编写 convertedSalesData 来根据需要进行转换:

_.map(data, function(item) {
    let name = item.name;
    let salesData = item.salesData;
    let convertedSalesData = ?
})

最佳答案

使用 ES6,您可以使用扩展语法 ... 来获得此结果。

const data = [{"name":"ABC","salesData":[{"timestamp":"2017-09-01","value":10},{"timestamp":"2017-09-02","value":2}]},{"name":"DEF","salesData":[{"timestamp":"2017-09-01","value":8},{"timestamp":"2017-09-02","value":3}]}]


var result = data.map(function({name, salesData}) {
  return {name, ...Object.assign({}, ...salesData.map(({timestamp, value}) => ({[timestamp]: value})))}
})
console.log(result)

关于javascript - 转换数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46403751/

相关文章:

javascript - 在 Canvas 中对点进行动画处理,奇怪的线条行为,每帧点的速度 > 1

javascript - 防止在 gRaphael 饼图中排序

javascript - 从数组中生成所有可能的单挑对决

javascript - Underscore.js 查找对象数组中的唯一值;返回唯一项目及其数量

javascript - 以数组作为参数执行函数

javascript - 为什么 typeof 或数字检查验证返回 false

javascript - 在 Cookie Javascript 中设置过期时间

创建 Iframe 的 Javascript

javascript - 如何使用 _.where 通过 ID 查找嵌套在对象数组中的对象?

javascript - 如何使用 underscore.js 作为模板引擎?