es6/7中的javascript对象数组转换

es6/7中的javascript对象数组转换,javascript,ecmascript-6,ecmascript-2016,Javascript,Ecmascript 6,Ecmascript 2016,我是Javascript新手,我通常需要处理对象和数组之间的转换,但如何在ES6/7中更优雅、更简洁,比如使用Spread syntax或lodash…,而不是用于循环迭代(因为我不喜欢可变的东西) 我要转换以下对象: { book: { 1001: 'a', 1002: 'b', 1003: 'c' }, game: { 1001: 'a' } } 要在对象数组的下面执行以下操作: [ { category: 'book',

我是Javascript新手,我通常需要处理对象和数组之间的转换,但如何在ES6/7中更优雅、更简洁,比如使用
Spread syntax
lodash
…,而不是用于循环迭代(因为我不喜欢可变的东西)

我要转换以下对象:

{
  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' }
    ]
  }
]

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

var data={book:{1001:a',1002:b',1003:c'},game:{1001:a'},
结果=对象
.条目(数据)
.map([类别,项目])=>
({category,item:Object.entries(item.map)([id,name])=>({id,name}));
控制台日志(结果)

.as控制台包装{max height:100%!important;top:0;}
您想要的东西无效。。。假设你想要它作为一个数组,而不是一个对象。不清楚你在寻找什么。第一次编辑至少将您所需的状态转换为有效数据,但您已将其更改为无效数据。很抱歉造成混淆。已更新为对象的数组。