JavaScript:动态生成的对象键

kni*_*ion 3 javascript properties key object ecmascript-6

const cars = [
  {
    'id': 'truck',
    'defaultCategory': 'vehicle'
  }
]

const output = []

Object.keys(cars).map((car) => {
  output.push({
      foo: cars[car].defaultCategory
  })
})

console.log(output)
Run Code Online (Sandbox Code Playgroud)

这工作正常,但我想要实现的是新的crated对象具有的结构'truck': 'vehicle'.

所以,如果我用...替换push参数

${cars[car].id}`: cars[car].defaultCategory
Run Code Online (Sandbox Code Playgroud)

我明白了 SyntaxError: Unexpected template string

我究竟做错了什么?

Ori*_*ori 7

在数组上使用map,而不是键(索引)来获取对象数组.对于每个对象,使用计算属性名称id值设置为键:

const cars = [
  {
    'id': 'truck',
    'defaultCategory': 'vehicle'
  }
];

const result = cars.map(({ id, defaultCategory }) => ({ [id]: defaultCategory }));

console.log(result);
Run Code Online (Sandbox Code Playgroud)