gpt4 book ai didi

javascript - 将数组数组转换为对象数组的有效方法

转载 作者:行者123 更新时间:2023-11-30 09:20:52 25 4
gpt4 key购买 nike

我有一个接受 2 个参数的函数:数组 csvFields:

["id","name","age",...]

和另一个包含这些字段数据的数组 csvRows:

 [["1", "john", "10"],["2", "Jane", "11"],["3", "John Doe", "12"],...]

这个函数输出的是一个像这样的对象数组:

[{id: "1", name: "john", age: "10"},{id: 2", name: "jane", age: "11"},{id: "3", name: "John doe", age: "12"}, ...]

函数如下:

const arrayOfArraysToArrayOfObjects = (csvFields, csvRows) => {
const data = csvRows.map((row) => {
let obj = {};
csvFields.forEach((field, index) => {
obj[field] = row[index];
});
return obj;
});
return data;
};


const csvFields = ["id","name","age"];
const csvRows = [["1", "john", "10"],["2", "Jane", "11"],["3", "John Doe", "12"]];
const data = arrayOfArraysToArrayOfObjects(csvFields, csvRows);
console.log(data);

问题是这个函数不是很有效,而且当涉及到有很多行的大 csv 文件时会变得很慢。此外,不同的 csv 文件的字段可能会有所不同,这就是为什么我必须保持动态。

有没有办法让这个功能更高效?

感谢您的帮助!

最佳答案

循环比方法更快,参见基准测试: https://jsperf.com/my-test321321321

const arrayOfArraysToArrayOfObjects = (csvFields, csvRows) => {
let res = []

for (let arr of csvRows) {
let obj = {}
for (let i = 0; i < arr.length; i++) {
obj[csvFields[i]] = arr[i]

}
res.push(obj)
}

return res;
};


const csvFields = ["id","name","age"];
const csvRows = [["1", "john", "10"],["2", "Jane", "11"],["3", "John Doe", "12"]];
const data = arrayOfArraysToArrayOfObjects(csvFields, csvRows);
console.log(data);

关于javascript - 将数组数组转换为对象数组的有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51806603/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com