【问题标题】:javascript object array conversion in es6/7es6/7中的javascript对象数组转换
【发布时间】:2018-05-24 19:16:16
【问题描述】:

我是 Javascript 新手,我通常需要处理对象和数组之间的转换,但我如何在 ES6/7 中做到更优雅或更干净,例如使用 Spread syntaxlodash...,而不是使用 for 循环迭代。(因为我不喜欢可变的东西。)

我想转换以下对象:

{
  book: {
    1001: 'a', 
    1002: 'b', 
    1003: 'c'
  },
  game: {
    1001: 'a'
  }
}

到下面的对象数组:

[
  {
    category: 'book',
    item: [
      { id: 1001, name: 'a' },
      { id: 1002, name: 'b' },
      { id: 1003, name: 'c' }
    ]
  }, 
  {
    category: 'game',
    item: [
      { id: 1001, name: 'a' }
    ]
  }
]

【问题讨论】:

  • 那么你想要的东西是无效的......假设你想要它作为一个数组,而不是对象。
  • 不清楚您在寻找什么。第一次编辑至少把你想要的状态变成了有效的数据,但是你把它改回了无效的东西。
  • 很抱歉给您带来了困惑。更新为对象数组。

标签: javascript ecmascript-6 ecmascript-2016


【解决方案1】:

您可以构建新对象并将内部对象映射为新项目。

var data = { book: { 1001: 'a', 1002: 'b', 1003: 'c' }, game: { 1001: 'a' } },
    result = Object
        .entries(data)
        .map(([category, item ]) => 
            ({ category, item: Object.entries(item).map(([id, name]) => ({ id, name })) }));

console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-04-06
    • 1970-01-01
    • 1970-01-01
    • 2015-08-09
    • 2019-03-31
    • 2019-10-12
    • 2015-02-21
    • 2019-10-22
    相关资源
    最近更新 更多