[英]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()
調用允許A
或B
更長,它將迭代到任 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
- > arrayA
和stringB
- > 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循環中的迭代次數沒有預定的限制,這意味着在此代碼運行時stringA
和StringB
數組的大小可能會繼續增長。
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.