簡體   English   中英

Javascript結合了數組或字符串

[英]Javascript combine arrays or strings

我有以下動態生成的字符串:

var stringA = ["a1", "a2", "a3" ... 'a400' ... 'a600']; // length 600
var stringB = ["b1", "b2", "b3" ... 'b400']; // length 400

如何將這兩個數組或字符串組合成如下:

var myString = ["a1b1", "a2b2", "a3b3" ... "a400b400", "a401" ... "a600"]

你可以這樣做:

var result = [], len = Math.max(stringA.length, stringB.length);
for(var i=0; i < len; i++) {
    result.push((stringA[i] || "") + (stringB[i] || ""));
}

你可以在這里測試一下|| "" || ""是為了防止將undefined作為字符串undefined為更短的數組。 Math.max()調用允許AB更長,它將迭代到任 A的末尾,就像A在問題中更長。

我不認為Array對象中有任何內容可以為你做,你必須做循環。 盡管如此,循環是微不足道的:

var index, length;
var result = [];
// assertion: arrayA.length === arrayB.length
result.length = arrayA.length; // Helps performance in some implemenations, harmless in others
for (index = 0, length = arrayA.length; index < length; ++index) {
     result[index] = arrayA[index] + arrayB[index];
}

(我已經重命名了stringA - > arrayAstringB - > arrayB以避免混淆。)

如果數組的長度不同或者數組中的某些條目未定義(這完全可能,JavaScript數組很稀疏),那么您需要在循環中處理它,例如:

var index, length, Apresent, Bpresent;
var result = [];
result.length = Math.max(arrayA.length, arrayB.length); // Helps performance in some implementations, harmless in others
for (index = 0, length = result.length; index < length; ++index) {
     Apresent = arrayA.hasOwnProperty(index);
     Bpresent = arrayB.hasOwnProperty(index);
     if (Apresent && Bpresent) {
         result[index] = arrayA[index] + arrayB[index];
     }
     else if (Apresent) {
         result[index] = arrayA[index];
     }
     else if (Bpresent) {
         result[index] = arrayB[index];
     }
}

如果數組是稀疏的並且它們在同一索引處恰好是稀疏的,則生成的數組也將是稀疏的。

如果您不需要保留原始2個數組中的項目,那么下面的代碼非常有效。 它對for循環中的迭代次數沒有預定的限制,這意味着在此代碼運行時stringAStringB數組的大小可能會繼續增長。

var myString = [];
for(var answer; answer = (stringA.shift() || "") + (stringB.shift() || "");) {
    myString.push(answer);
}
var myString = [];

for (var i=0;i<stringA.length;i++){
     myString[i] = stringA[i] + stringB[i];
}

暫無
暫無

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

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