交替连接两个字符串 - Javascript

3

我有两个字符串,需要构建下面的结果(可以是JSON):

indexLine: "id,first,last,email\n"

dataLine: "555,John,Doe,jd@gmail.com"

结果:"id:555,first:john,....;

最快的连接这两个字符串的方法是什么?

我写了这个——但它似乎太直接了:

function convertToObject(indexLine, dataLine) { 
    var obj = {};
    var result = "";
    for (var j = 0; j < dataLine.length; j++) {
        obj[indexLine[j]] = dataLine[j]; /// add property to object   
    }
    return JSON.stringify(obj); //-> String format;
}

谢谢。

3
这是一个快速且正确的完成方式。任何进一步的性能优化都需要更多关于参数、调用频率等方面的信息。 - Tennyson H
1
“看起来太直接了”,嘿,如果你的代码清晰并且能够完成其工作,那就更好了! - phenxd
你为什么要有一个数据行和一个索引行?难道你的API调用不能返回JSON格式吗? - curiousdork
既然您已经有可用的代码并且想知道它是否可以改进,也许http://codereview.stackexchange.com/是一个更好的询问之处。 - pawel
2个回答

2
var indexLine = "id,first,last,email";
var dataLine = "555,John,Doe,jd@gmail.com";

var indexes = indexLine.split(',');
var data = dataLine.split(',');

var result = [];

indexes.forEach(function (index, i) {
    result.push(index + ':' + data[i]);
});

console.log(result.join(',')); // Outputs: id:555,first:John,last:Doe,email:jd@gmail.com

在Firefox中似乎更快,但在Chrome中较慢:http://jsperf.com/arays-to-key-value(对您的代码进行一些更改以匹配原始代码,即有效的JSON字符串)。 - pawel

0
如果您需要创建多个对象实例,可以使用以下代码。
var newarray = [],
    thing;

for(var y = 0; y < rows.length; y++){
    thing = {};
    for(var i = 0; i < columns.length; i++){
        thing[columns[i]] = rows[y][i];
    }
    newarray.push(thing)
}

来源


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接