将复杂的2D阵列合并为一个

时间:2016-09-19 10:50:42

标签: javascript arrays multidimensional-array

我从UI上的表中获取一行.Below只是一行 我控制台上表UI的值:

[ '  0',
  'ALPHA NUMERIC(100)\nPG_8_2670\nSt.Athens.,Pt\n1062645\nAutomation-if add row is editable\nALPHA NUMERIC(20)\nTIMESTAMP(19)\nYYYY-MM-DD(19)\n0' ]

现在我想将上述结果转换为以下格式。

[ '  0','ALPHA NUMERIC(100)','PG_8_2670','St.Athens.,Pt','1062645','Automation-if add row is editable','ALPHA NUMERIC(20)','TIMESTAMP(19)','YYYY-MM-DD(19)','0' ]

我实际面临的问题是'St.Athens.,Pt'中出现的逗号 我写了下面的代码,但这没有帮助:

client.getText(obj.table.addedRow,function(err, values) {
                console.log('VAlues before changes:',values);
                var str = values.toString();
                str = str.replace(/\n/g,",");
                var values = str.split(',').toString();
                console.log('Values from table of empty row post changes:',values);

1 个答案:

答案 0 :(得分:1)

从根本上说,看起来你不需要这些行

  str = str.replace(/\n/g,",");
  values = str.split(',').toString();

直接拆分\ n可能更有效;从而

  values = str.split('\n');

你可能想要更好地管理数组;类似于带有pop-push或loop-push组合的循环应该可以为您提供所需的结果。

这是一个完整的工作代码示例:

var startArray = [ '  0',
  'ALPHA NUMERIC(100)\nPG_8_2670\nSt.Athens.,Pt\n1062645\nAutomation-if add row is editable\nALPHA NUMERIC(20)\nTIMESTAMP(19)\nYYYY-MM-DD(19)\n0' ];
var endArray = [];

startArray.forEach(function(key) { 
    if(key.indexOf("\n")>=0) {
        endArray = endArray.concat(key.split('\n'));
    } else {
        endArray.push(key);
    }
});

// voila, endArray contains 
// [ '  0','ALPHA NUMERIC(100)','PG_8_2670','St.Athens.,Pt','1062645','Automation-if add row is editable','ALPHA NUMERIC(20)','TIMESTAMP(19)','YYYY-MM-DD(19)','0' ]