【问题标题】:Why does this .indexOf method not work on this array?为什么这个 .indexOf 方法不适用于这个数组?
【发布时间】:2017-03-12 17:18:59
【问题描述】:

我有以下代码:

var newArr = [];

function mutation(arr) {

  //Makes both values lowercase

  for (var i = 0; i < arr.length; i++) {

    newArr.push(arr[i].toLowerCase());

  }

  //splits the letters of the second value into separate values.

  var letters = [];
  letters.push(newArr[1]);
  letters = letters.toString();
  letters = letters.split('');

  //checks to see if there is a letter that isn't in the first value.

  for (var j = 0; j < letters.length; j++) {

    if (newArr[1].indexOf(letters[j]) == -1) {

      return false;

    }

  }

  return true;

}

mutation(["voodoo", "no"]);

它适用于 (["hello", "hey"]) 之类的东西,但不适用于上述方法。为什么 .indexOf 方法对这个数组不起作用?

【问题讨论】:

  • 为什么newArr不需要是全局变量?
  • 为什么要将数组转换为字符串?为什么首先使用数组?怎么了,代码完全按照它的指示做......

标签: javascript arrays methods


【解决方案1】:

我真的不知道代码应该做什么,但让我们一步一步检查:

var newArr = [];

function mutation(arr) {

  // Makes both values lowercase
  // arr is now ["voodoo", "no"]

  for (var i = 0; i < arr.length; i++) {

    newArr.push(arr[i].toLowerCase());

  }
  // newArr has the same content: ["voodoo", "no"]
  //splits the letters of the second value into separate values.

  var letters = [];
  letters.push(newArr[1]); // letters is now ["no"]
  letters = letters.toString(); // letters is now "no"
  letters = letters.split(''); // letters is now ["n", "o"]

  //checks to see if there is a letter that isn't in the first value.

  for (var j = 0; j < letters.length; j++) { // foreach ["n", "o"]

    if (newArr[1].indexOf(letters[j]) == -1) { // "no".indexOf("n") and "no".indexOf("o") is always > -1 


      return false; // so false is never returned

    }

  }

  return true; // true is always returned

}

mutation(["voodoo", "no"]);

我认为你应该改变

if (newArr[1].indexOf(letters[j]) == -1)

if (newArr[0].indexOf(letters[j]) == -1)

如果要测试第二个单词的一个字母是否不包含在第一个单词中。

【讨论】:

  • 我这样做了,但现在 (["hello"], ["hey"]) 不起作用。
  • “不起作用”是什么意思?如果我将索引从 1 更改为 0 并使用 ["hello", "hey"] 作为参数调用函数,我会得到 false 作为返回值。
猜你喜欢
  • 1970-01-01
  • 2017-04-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-01
  • 1970-01-01
  • 2019-05-21
  • 1970-01-01
相关资源
最近更新 更多