为什么我的while循环没有完全迭代?

时间:2016-03-10 23:54:51

标签: javascript loops while-loop

所以这是我下面的代码,这个程序的目标是检查第一个字符串中是否可以找到第二个字符串的字母。然而,我发现了问题,我不是,价值增加。所以循环只经过一次。所以这个程序在它找到的第一个字母处结束并返回true。如何让我增加,以便它遍历字符串的每个字符?

function mutation(arr) {
  var str = arr[1];
  str = str.toLowerCase().split("");
  var i = 0;
  while (i < arr.length) {
    if (arr[0].indexOf(str[i]) > -1) {
      //return  arr[i].indexOf(str[i], i);
      return true;
    } else {
      return false;
    }
    i++;
  }
}

mutation(["hello", "hey"]);

3 个答案:

答案 0 :(得分:2)

这可能吗?

function mutation(arr) {
  var str = arr[1];
  str = str.toLowerCase().split("");
  // iterating an array screams "for loop"
  for (var i=0; i < str.length; i++) {
    // if the letter was not found exit immediately
    if (arr[0].indexOf(str[i]) == -1) return false;
  }
  // since it didn't exit before, all the letters must have been found.
  return true;
}

答案 1 :(得分:0)

function mutation(arr) {
  var base = arr[0],
      str = arr[1].toLowerCase().split(''),
      i = 0,
      match = true;
  while (i < str.length) {
    // if any target letter is not in base, return false
    if(base.indexOf(str[i]) === -1){
        return false;
    }
  }
  // otherwise they were all in, so return true
  return true;
}
mutation(["hello", "hey"]);

答案 2 :(得分:0)

完全不同的技术。

此函数在第二个字符串中替换第一个字符串中包含空格的所有字母。如果长度为零,则找到所有字母。

function mutation(arr) {
  return arr[1].replace(new RegExp("[" + arr[0] + "]", "g"), "").length == 0;
}