从字符串数组中删除相邻的双字母

时间:2015-12-03 23:33:02

标签: javascript for-loop

我写了这段代码来删除字符串中的某些字符,我将其转换为字符数组。

function extractChar(str) {
  var array = [];
  array = str.split('');

  for (i=1;i<arguments.length;i++) {
    for (x=0;x<array.length;x++) {
      if (array[x] === arguments[i]) {
        var temp = array.indexOf(array[x]);
        array.splice(temp,1);
      }
    }
  }
  document.write(array);
}

extractChar('hello my name is frank','f','m','l');

该代码适用于删除在数组中出现一次的字符(在本例中为“f”)。它也适用于删除彼此不相邻的双字符(在这种情况下为“m”)。

然而,它不适用于彼此相邻的双字母(在这种情况下为'l')。为什么是这样?它适用于两个彼此相邻的不同字母(如'f'和'r')。为什么不用双字母?

谢谢

2 个答案:

答案 0 :(得分:1)

当你拼接数组时,下一个索引将减1,所以你需要递减你的&#39; x&#39;因此=)

function extractChar(str){       var array = [];       array = str.split(&#39;&#39;);

  for (i=1;i<arguments.length;i++) {
    for (x=0;x<array.length;x++) {
      if (array[x] === arguments[i]) {
        var temp = array.indexOf(array[x]);
        array.splice(temp,1);
        x--;
      }
    }
  }
  document.write(array);
}

extractChar('hello my name is frank','f','m','l');

答案 1 :(得分:0)

要删除JavaScript中的相邻双字母,请执行此操作

function deleteDuplicates(string) {
    return string.replace(/(.)\1{1,}/g, '');
}

deleteDuplicates("hello")
=> "heo"