给定输入 str1 是 "abc"str2 是 "def"输出应该是 adbecf 给定 str1 = "ab"和 str2 = "def"输出应该是 adbef
我的输出是:
合并('abc','def') “adbecfNaN”
合并('ab','def') “adbeundefinedf”
我一直在尝试过滤 undefined 和 NAN,但它不起作用。
这是我的代码:
function merge (str1, str2) {
var a = str1.split("").filter(Boolean);
var b = str2.split("");
var mergedString = '';
for(var i = 0; i <= a.length && i <= b.length; i++) {
mergedString += a[i] + b[i];
}
return mergedString;
}
最佳答案
你需要使用<
而不是 <=
在循环条件中,因为数组索引是从 0 开始的。这就是你得到 NaN 的原因。你可以这样做:
function merge (str1, str2) {
var a = str1.split("").filter(Boolean);
var b = str2.split("");
var mergedString = '';
for(var i = 0; i < a.length || i < b.length; i++) { //loop condition checks if i is less than a.length or b.length
if(i < a.length) //if i is less than a.length add a[i] to string first.
mergedString += a[i];
if(i < b.length) //if i is less than b.length add b[i] to string.
mergedString += b[i];
}
return mergedString;
}
console.log(merge('abc','def'));
console.log(merge('ab','def'));
关于javascript - 如何在javascript中交替合并两个字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46067156/