首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在javascript中交替合并两个字符串?

如何在javascript中交替合并两个字符串?
EN

Stack Overflow用户
提问于 2017-09-06 13:06:16
回答 9查看 7.3K关注 0票数 5

给定输入str1为"abc“,str2为"def”,输出应为adbecf,给定str1 = "ab“,str2 = "def”,输出应为adbef

我的输出是:

merge('abc','def') "adbecfNaN“

merge('ab','def') "adbeundefinedf“

我一直在尝试过滤undefined和NAN,但它不起作用。

下面是我的代码:

代码语言:javascript
复制
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;

}
EN

回答 9

Stack Overflow用户

回答已采纳

发布于 2017-09-06 13:12:36

您需要在循环条件中使用<而不是<=,因为数组索引是从0开始的。这就是你得到NaN的原因。你可以这样做:

代码语言:javascript
复制
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'));

票数 2
EN

Stack Overflow用户

发布于 2017-09-06 13:54:53

最短也可能是最快的方法是迭代字符串的最小长度,然后取两个字符串的其余部分。

代码语言:javascript
复制
function zip(a, b) {
    var i,
        l = Math.min(a.length, b.length),
        temp = '';

    for( i = 0; i < l; i++) {
        temp += a[i] + b[i];
    }
    return temp + a.slice(i) + b.slice(i);
}

console.log(zip('abc', '123')); // a1b2c3
console.log(zip('ab', '123'));  // a1b23
console.log(zip('abcd', '12')); // a1b2cd

对于ES6,您可以将Array.from与字母的内置映射器一起使用。

代码语言:javascript
复制
var a = "ab",
    b = "def",
    result = Array.from(a.length > b.length ? a : b, (_, i) => (a[i] || "") + (b[i] || ""))
                  .join('');

console.log(result);

票数 1
EN

Stack Overflow用户

发布于 2017-09-06 21:23:21

一种简单的方法:迭代最长的字符串,输出当前索引处的字符组合,如果当前索引处没有字符,则使用空字符串。

代码语言:javascript
复制
console.log(merge('ab','def'));

function merge(a, b){
  for(var i = 0, s = '', l = Math.max(a.length, b.length); i < l; i++){
    s += a.charAt(i) || '';
    s += b.charAt(i) || '';
  }
  return s;
}

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46067156

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档