For loop 代码不工作-.indexOf不是函数

For loop 代码不工作-.indexOf不是函数,for-loop,indexof,For Loop,Indexof,我在FreeCodeCamp上做一些练习,学习如何使用indexOf。然后,我复制了相同的练习,但有一些细微的变化,但我被indexOf卡住了,没有被识别为函数 我从控制台得到这个错误 mySecondArray[i].indexOf is not a function 有人能帮助我理解为什么会发生这种情况,以及我下次应该注意什么吗 多谢各位 let mySecondArray = [1,2]; mySecondArray.push([1,2], [2,3], [10,20]) console

我在FreeCodeCamp上做一些练习,学习如何使用indexOf。然后,我复制了相同的练习,但有一些细微的变化,但我被indexOf卡住了,没有被识别为函数

我从控制台得到这个错误

mySecondArray[i].indexOf is not a function
有人能帮助我理解为什么会发生这种情况,以及我下次应该注意什么吗

多谢各位

let mySecondArray = [1,2];
mySecondArray.push([1,2], [2,3], [10,20])
console.log(mySecondArray);

function myThirdArray(mySecondArray, elem) {
  let myThirdArray = [];
  for(let i = 0; i < mySecondArray.length; i++) {
    if(mySecondArray[i].indexOf(elem)==-1) {
    myThirdArray.push(mySecondArray[i]);  
    };
  };
  return myThirdArray; 
} 

console.log(myThirdArray(mySecondArray,2)); 
如果您得到的.methodName不是变量上的函数错误,则通常意味着数据类型不是您认为的类型-在本例中,mySecondArray[i]不能始终是数组-因此它没有.indexOf方法

最简单的调试方法通常是只调试console.logmySecondArray并注意不一致性,尽管看起来您已经在这么做了

在本例中,您正在执行以下操作:

let mySecondArray = [1,2];
mySecondArray.push([1,2], [2,3], [10,20])
所以mySecondArray是[1,2,[1,2],[2,3],[10,20],这意味着您正试图在1上.indexOf

如果要使原始数组也成为嵌套数组,则需要:

let mySecondArray = [[1,2]]; // now it's an array, with `[1,2]` as its first element.
而不是 forlet i=0;i 请在for循环条件中尝试mySecondArray.length-1

 for(let i = 0; i < mySecondArray.length-1; i++)
希望这有帮助,谢谢