JavaScript:动态生成的对象键

时间:2017-12-06 14:59:16

标签: javascript object properties ecmascript-6 key

void(void)

这项工作很好,但我想要实现的是新创建的对象具有const cars = [ { 'id': 'truck', 'defaultCategory': 'vehicle' } ] const output = [] Object.keys(cars).map((car) => { output.push({ foo: cars[car].defaultCategory }) }) console.log(output) 的结构。

所以如果我用

替换'truck': 'vehicle'参数
push

我得到${cars[car].id}`: cars[car].defaultCategory

我做错了什么?

2 个答案:

答案 0 :(得分:7)

在数组上使用map,而不是键(索引)来获取对象数组。对于每个对象,使用computed property namesid值设置为键:

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

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

console.log(result);

答案 1 :(得分:1)

您应该使用.map()而不是array而非Object.keys(cars):我们不会将Object.keys()用于数组。

这应该是你的代码:

var output = cars.map(function(car) {
  return {
    [car.id]: car.defaultCategory
  };
});



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


var output = cars.map(function(car) {
  return {
    [car.id]: car.defaultCategory
  };
});

console.log(output);