我有一系列带有车辆名称的字符串。
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},
]
有人可以帮助使用自定义键生成数组吗
答案 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)