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

时间:2017-01-19 19:46:25

标签: javascript arrays for-loop return indexof

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(秒[I]);

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

中加入'秒[i]'
  

的console.log(total.indexOf(秒[I]));

输出全为'-1',这意味着找不到方法.indexOf() 任何一封信!

2 个答案:

答案 0 :(得分:0)

无法找到任何原因让你获得-1的原因。

答案 1 :(得分:0)

您正在针对单个字符检查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"]);