所以我有一个数组数组,这些数组是表中的行,我想将其转换为对象数组。我有一个columns数组,所以我知道键是什么,当然,长度显然是相同的。我知道传统上如何使用for循环来执行此操作,但是我想知道如何使用减少或可能的其他更简洁的方式来执行此操作。
let columnArr = ["Name", "Group", "Tier"];
let twoDArryOfArrs = [
["Fred", "1FAKnock", "1a"],
["Brenda", "2GPvoge", "1a"],
["Francis", "67Gruz", "1a"],
["Arnold", "1FAKnock", "2b"],
["Candice", "67Gruz", "1a"],
["Larry", "1GTAFQT", "4a"],
["Tony", "2GPvoge", "2c"],
["Ronnie", "2GPvoge", "3a"]
];
function convert2dArryToArrOfObjects(arr2d, colArr) {
let obj = {},
resultArr = [];
for (let i = 0; i < arr2d.length; i++) {
let innerArr = arr2d[i];
for (let j = 0; j < innerArr.length; j++) {
obj[colArr[j]] = innerArr[j];
}
resultArr.push(obj);
obj = {};
}
return resultArr;
}
const output = convert2dArryToArrOfObjects(twoDArryOfArrs, columnArr);
console.log(output);
一种方法是将归约嵌套在归约中,其中:
resultArr
and如前所述,假设列数与输入2D数组中的行项目数匹配-考虑到这一点,以下解决方案应该可以满足您的要求:
希望有帮助!