在javascript中合并字符串

时间:2017-06-05 23:01:07

标签: javascript string function variables

我想使用javascript交替合并两个变量和stings。什么算法可以完成这项任务?

例如:

var a = "abc"
var b = "def"

result = "adbecf"

6 个答案:

答案 0 :(得分:1)

执行此操作的最佳方法是执行以下算法:

  1. 通过字符串1
  2. 进行迭代
  3. 对于每个字符,如果字符串2中的字符位于同一位置,则用两者替换原始字符

    这可以通过以下代码实现:

    .electron-vue/webpack.web.config.js

    或更多Codegolf类型的答案:

    .electron-vue/webpack.main.config.js

答案 1 :(得分:1)

我会使用Array.from从字符串生成一个数组(具有unicode意识)。

之后,只需在每个字符串中添加一个字母,直到每个字符串都没有字母。请注意,此解决方案会合并长度不均匀的字符串(.electron-vue/webpack.renderer.config.js + function merge(s, t) { return s.split("") .map(function(v,i) { return t[i] ? v + t[i] : v }) .join("") } = s=>t=>[...s].map((v,i)=>t[i]?v+t[i]:v).join``

aa

答案 2 :(得分:1)

简单的方法是定义最长的字符串并分配给 for循环。另外,您还必须为长度不均匀的字符串添加 if语句,因为您想忽略较短字符串的 undefined 值。

function mergeStrings(s1, s2){

   
  var n = s1.length;
  
  if(s1.length < s2.length){
    n = s2.length;
  }
  
  var string = '';
  for(var i = 0; i < n; i++){
    if(s1[i]){
      string += s1[i];
    }
    if(s2[i]){
      string += s2[i];
    }
  }

  return string;
}

console.log(mergeStrings('ab','lmnap'));
console.log(mergeStrings('abc','def'));

答案 3 :(得分:0)

如果你的字符串长度相同,这将有效。如果不是,你将不得不在循环后附加剩余的较长字符串。您可以在循环外声明i,然后使用substr()来获取较长字符串的结尾。

const a = "abc"
const b = "def"

var res = "";
for (var i = 0;i < Math.min(a.length, b.length); i++) {
  res += a.charAt(i) + b.charAt(i)
}

console.log(res)

答案 4 :(得分:0)

正则表达式或数组处理和加入完成工作:

include.lowest=TRUE/FALSE

答案 5 :(得分:0)

  

您可以使用数组扩展和缩小来解决此问题。将每个字符串拆分为一个数组,然后合并为一个数组,然后使用reduce生成合并后的字符串。

function mergeStrings(a, b) {
    const mergedValues = [
     ...a.split(''),
     ...b.split('')
     ].reduce((values, currentValue) => {
         if (!values.includes(currentValue)) {
             values.push(currentValue);
         }
         return values;
       }, []);

    return Array.from(mergedValues).join('');
}