簡體   English   中英

如何在javascript中最有效地從對象數組生成字符串?

[英]How to most efficiently generate string from array of objects in javascript?

我有以下內容:

var students = [{name:"Jordan", age:"6"},{name:"Jake", age:"7"},{name:"Mark", age:"10"}]

我想生成一個這樣的字符串:“Jordan,6 | Jake,7 | Mark,10”

最有效的方法是什么?

我目前正在使用:

var studentstr = "";
for(var i = 0; i < students.length; i++) {
  studentstr = students['name'] + "," + students['age'] + "|"
}
studentstr = studentstr.substring(0, studentstr.length - 1);

另外,性能方面,如果我有2000個項目的數組,那么執行這種轉換是“代價高昂”嗎? 結果字符串包含對象中的兩個鍵,而不包含屬性中一個對象上的單個連接。

您可以將每個學生對象映射到一個字符串,然后使用|將它們全部連接起來

var studentstr = students.map(function (student) {
    return student.name + ',' + student.age;
}).join('|');

另外,性能方面,如果我有2000個項目的數組,那么執行這種轉換是“代價高昂”嗎?

沒有。

是的,在循環中使用字符串連接是昂貴的。 每次迭代時字符串都會增長,每次必須復制整個前一個字符串以創建新版本。 循環的執行時間呈指數增長到項目數。

您可以將每個對象的字符串放在一個數組中,然后將它們連接在一起:

 var students = [{name:"Jordan", age:"6"},{name:"Jake", age:"7"},{name:"Mark", age:"10"}]; var items = []; for (var i = 0; i < students.length; i++) { items.push(students[i].name + ',' +students[i].age); } var str = items.join('|'); // display result in snippet document.write(str); 

map適用於此:

var students = [{name:"Jordan", age:"6"},{name:"Jake", age:"7"},{name:"Mark", age:"10"}];
var result = students.map(function(student) {
    return student.name + ',' + student.age;
});
alert(result.join('|'));

試試這個,看看你的控制台:

var string = '';
for (var s in students) {
    string += students[s].name + ', ' + students[s].age + ' | ';
}

console.log(string);

小提琴: http//jsfiddle.net/80ss0u14/

我認為采用這種方法並不昂貴。 它可能是迭代數據的最有效方式。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM