具有自定义键的对象数组

时间:2018-05-16 11:00:19

标签: javascript

我有一系列带有车辆名称的字符串。

a=['car', 'scooter', 'bike'];

我需要生成一个数组,使每个对象都有一个属性color:red

我使用了array.reduce。这是我写的代码

function getInitialMap(a) {
    const vehicleMap = [];
    return vehicles.reduce((_vehicleMap, type) => {
        _vehicleMap.concat({[type]: {color: red}});
        return _vehicleMap;
    }, vehicleMap);
}

我得到的是:

_vehicleMap = [
    0:{car:{color:red}},
    1:{scooter:{color:red}},
    2:{bike:{color:red}}
]

我的要求:

_vehicleMap = [
    car:{color:red},
    scooter:{color:red},
    bike:{color:red},
]

有人可以帮助使用自定义键生成数组吗

2 个答案:

答案 0 :(得分:4)

如果您想使用reduce执行此操作:这是我的解决方案:

const a = ['car', 'scooter', 'bike'];
const colored = a.reduce((agg, vehicle) => {
  agg[vehicle] = {color: 'red'};
  return agg;
}, {});
console.log(colored);

答案 1 :(得分:3)

按定义映射是字典,它不能是数组。你也不需要为此减少。我就是这样做的

var a=['car', 'scooter', 'bike'];

var map = {};

a.forEach(function(v) {
  map[v] = {color: 'red'}
})

console.log(map)