我正在解析一个excel文件,它有7列和超过300k行。
我需要创建对象(Nodejs端)并在数据库中进行批量插入。
我想知道为此目的创建大量对象的最佳方法是什么。
我提出了三种方法,并且不确定在速度和记忆方面哪一种是嵌套:
首先:
var bulkObjects = [];
worksheet.eachRow({includeEmpty: true}, function (row, rowNumber) {
var currentObject = createRowObject(row.values);
bulkObjects.push(currentObject);
});
function createRowObject(row) {
return {
Row1: row[1],
Row2: row[2],
Row3: row[3],
Row4: row[4],
Row5: row[5],
Row6: row[6]
}
}
第二
var bulkObjects = [];
worksheet.eachRow({includeEmpty: true}, function (row, rowNumber) {
var currentObject = **new** createRowObject(row.values);
bulkObjects.push(currentObject);
});
function createRowObject(row) {
this.Row1: row[1],
this.Row2: row[2],
this.Row3: row[3],
this.Row4: row[4],
this.Row5: row[5],
this.Row6: row[6]
}
第三
var bulkObjects = [];
worksheet.eachRow({includeEmpty: true}, function (row, rowNumber) {
var currentObject = createRowObject(row.values);
bulkObjects.push(currentObject);
});
function createRowObject(row) {
var o = new Object();
o["Row1"] = row[1];
o["Row2"] = row[2];
o["Row3"] = row[3];
o["Row4"] = row[4];
o["Row5"] = row[5];
o["Row6"] = row[6];
return o;
}
哪一个最适合创建大量对象。还有另一种方法吗?
答案 0 :(得分:1)
I suggest if you are using node js on server side then you should try Loadash library for faster and error free object transformations.
Try this
var objectMappingHeaders = ['Row1','Row2','Row3','Row4','Row5','Row6','Row7'];
var data = [[1,2,3,4,5,6,7],['a','b','c','d','e','f','g']];
var output = _.reduce(data, function(result, val) {
result.push(_.zipObject(objectMappingHeaders, val));
return result;
}, [])