【问题标题】:Javascript Object Creation - Create Many ObjectsJavascript 对象创建 - 创建许多对象
【发布时间】:2016-04-15 12:30:54
【问题描述】:

我正在解析一个 7 列和超过 30 万行的 excel 文件。

我需要创建对象(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;
}

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

【问题讨论】:

  • 为什么不设置测试并使用 Profiling JavaScript Performance 进行检查?
  • 如果内存是个问题,最好的方法是批量插入多个bulkObjects,而不是一次性完成,这样所有已经插入的对象都可以被垃圾回收.关于对象的创建,由于对象上没有方法,所有 3 种方法的速度都应该差不多,所以选择更简单的方法,第一种。您甚至可以通过删除函数调用并直接推送对象来使其更简单。
  • 有没有例子如何做多个批量插入?

标签: javascript


【解决方案1】:

我建议如果您在服务器端使用节点 js,那么您应该尝试使用 Loadash 库来实现更快且无错误的对象转换。

试试这个

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

【讨论】:

    猜你喜欢
    • 2011-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-09
    • 1970-01-01
    • 2014-01-02
    • 2016-04-23
    相关资源
    最近更新 更多