繁体   English   中英

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

[英]Convert an array of arrays to an array of objects with mapped properties

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

例如:

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

所以最终的结果是:

[
    {id: 1, name: 'Honda', description: 'Honda description here'},
    {id: 2, name: 'Mercedes', description: 'Mercedes description here'},
    {id: 3, name: 'Toyota', description: 'Toyota description here'},
];

使用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. cars数组上的[].map()循环遍历其元素。
  2. [].reduce()在每个汽车元素上将三个值减少为一个 object,利用mapping object 中的排序。

这是一个可以缩短为单行的解决方案:

 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);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM