javascript - 我可以减少这个方法来实例化一个对象并插入一个数组吗?

标签 javascript jquery

我正在将 .csv 文件读入数组中。该文件仅包含员工信息(姓氏、名字、工作等)。我最终想创建一个矩阵,其中用每个人对象填充一维数组。这是我的代码:

function setStaffData() {
    /** @type {Array.<string>} */
    var lines = [],
        person = [];
    $.ajax({
        url: 'data/staff2.csv',
        contentType: "text/csv",
        async: false,
        success: function(text) {
            lines = text.split(/\n/);
        }
    });
    for (var i = 0; i < lines.length; i++) {
        lines[i] = lines[i].replace(/(\r\n|\n|\r)/gm,"");
        person[i] = lines[i].split(",");
        staff[i] = new PersonClass(person[i][0], person[i][1], person[i][2], person[i][3], person[i][4], person[i][5], person[i][6], person[i][7]);
    }
}

如何在不使用 person 数组的情况下缩短流程?

最佳答案

由于您似乎没有在填充的循环迭代之外使用 person 中每个条目的内容,因此您可以只使用单个变量:

function setStaffData() {
    /** @type {Array.<string>} */
    var lines = [],
        person;
    $.ajax({
        url: 'data/staff2.csv',
        contentType: "text/csv",
        async: false,
        success: function(text) {
            lines = text.split(/\n/);
        }
    });
    for (var i = 0; i < lines.length; i++) {
        lines[i] = lines[i].replace(/(\r\n|\n|\r)/gm,"");
        person = lines[i].split(",");
        staff[i] = new PersonClass(person[0], person[1], person[2], person[3], person[4], person[5], person[6], person[7]);
    }
}

编辑:

还可以进一步缩短它以消除 lines 数组:

function setStaffData() {
    /** @type {Array.<string>} */
    $.ajax({
        url: 'data/staff2.csv',
        contentType: "text/csv",
        // note: removed "async: false"
        success: function(text) {
            var lineRegex = new RegExp('.*\n', 'g');
            var match, line, person;
            while (match = lineRegex.exec(text)) {
                line = match[0].replace(/(\r\n|\n|\r)/gm,"");
                person = line.split(",");
                staff.push(new PersonClass(person[0], person[1], person[2], person[3], person[4], person[5], person[6], person[7]));
            }
        }
    });
}

关于javascript - 我可以减少这个方法来实例化一个对象并插入一个数组吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29676875/

相关文章:

javascript - 在 VM 共享目录上运行 `grunt`

javascript - Netbeans javascript 评论

javascript - 使用 Rangy Library 在 contentEditable div 中获取准确的插入符位置

jquery - 如何避免 jQuery 中的重复

javascript - 通过ajax actionlink传递javascript变量来加载部分 View

javascript - Chrome 上的 localStorage 在 getItem、setItem 之后重置

javascript - Flask flash 和 url_for 与 AJAX

javascript - 通过 JavaScript 发送 Mac OS X 通知中心消息 - 10.10 Yosemite

javascript - React Native - this.setState 不是函数

javascript - 点击URL不规则highcharts图