为什么 .indexOf() 返回 -1?

Why .indexOf() is returning -1?

function mutation(arr) {
         var total = arr.map(function(x){return x.toLowerCase();});
          var sec = total[1];
            for(var i=0; i < sec.length; i++){
        //       console.log(sec[i]);
              console.log(total.indexOf(sec[i]));
          }
        }
        mutation(["hello", "hey"]);

请帮我理解一下。 带有

的行

console.log(sec[i]);

每次在控制台上显示 'hey' 字符串的字母。那没关系! 现在,我需要知道的是为什么我在

中调用 'sec[i]'

console.log(total.indexOf(sec[i]));

输出全是'-1',表示没有找到方法.indexOf() 任意字母!

它找不到任何导致您得到 -1 的原因。

您正在根据单个字符检查 total 数组。即长度不等,长度大于1的字符串不等于单个字符(字符串长度为1)。

基本上你这样做:

["hello", "hey"].indexOf('h') // -1
["hello", "hey"].indexOf('e') // -1
["hello", "hey"].indexOf('y') // -1

如果你想用第一个字符串和第二个字符串的字符进行比较,那么你需要指定索引。

console.log(total[0].indexOf(sec[i]));
                 ^^^

function mutation(arr) {
    var total = arr.map(function (x) { return x.toLowerCase(); }),
        sec = total[1],
        i;

    for (i = 0; i < sec.length; i++){
        console.log(sec[i], total[0].indexOf(sec[i]));
    }
}

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