Javascript对象创建 - 创建许多对象

时间:2016-04-15 12:30:54

标签: javascript

我正在解析一个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;
}

哪一个最适合创建大量对象。还有另一种方法吗?

1 个答案:

答案 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;
}, [])