将数组的数组转换为对象以便用给定的映射属性替换索引的最佳方法是什么。
例如:
100.0
所以最终结果是:
let cars = [
[1, "Honda", "Honda description here"],
[2, "Mercedes", "Mercedes description here"],
[3, "Toyota", "Toyota description here"],
];
let mapping = {
0: 'id',
1: 'name',
2: 'description',
};
答案 0 :(得分:1)
使用map
命令。注意:此代码假定数组的每个元素都有映射。
let cars = [
[1, "Honda", "Honda description here"],
[2, "Mercedes", "Mercedes description here"],
[3, "Toyota", "Toyota description here"],
];
let mapping = {
0: 'id',
1: 'name',
2: 'description',
};
let result = cars.map(a => {
let obj = {};
a.forEach((v,i) => {
obj[mapping[i]] = v;
});
return obj;
});
console.log(result);
答案 1 :(得分:1)
您可以使用以下组合获得合并结果:
[].map()
上的cars
遍历其元素。[].reduce()
上的每个car元素都可以利用您在mapping
对象中进行的排序将这三个值减少为一个对象。以下是可以简化为单一格式的解决方案:
let cars = [
[1, "Honda", "Honda description here"],
[2, "Mercedes", "Mercedes description here"],
[3, "Toyota", "Toyota description here"],
];
let mapping = {
0: 'id',
1: 'name',
2: 'description',
};
let result = cars.map((car) => (
car.reduce((acc, cur, i) => (
Object.assign(acc, { [mapping[i]]: cur })
), {})
));
console.log(result);