[英]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);
您可以通过使用以下组合来实现合并结果:
cars
数组上的[].map()
循环遍历其元素。[].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.