将数组数组转换为具有映射属性的对象数组

时间:2019-10-02 21:36:48

标签: javascript arrays object

将数组的数组转换为对象以便用给定的映射属性替换索引的最佳方法是什么。

例如:

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',
};

2 个答案:

答案 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()上的
  1. cars遍历其元素。
  2. [].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);