【问题标题】:code not working - .indexOf not a function代码不起作用 - .indexOf 不是函数
【发布时间】:2019-08-24 11:00:06
【问题描述】:

我在 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)); 

【问题讨论】:

    标签: for-loop indexof


    【解决方案1】:

    如果您在变量上遇到 .methodName is not a function 错误,这通常意味着数据类型不是您认为的那样 - 在这种情况下,mySecondArray[i] 不能(总是)是一个数组 - 所以它没有.indexOf 方法。

    调试此问题的最简单方法通常是 console.log(mySecondArray) 并注意不一致(尽管看起来您已经这样做了。)


    在这种情况下,你正在做:

    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.
    

    【讨论】:

      【解决方案2】:

      而不是 for(让 i = 0; i

      请在 for 循环条件下尝试 mySecondArray.length-1

       for(let i = 0; i < mySecondArray.length-1; i++)
      

      希望对你有帮助,谢谢

      【讨论】:

        猜你喜欢
        • 2017-02-02
        • 2013-07-21
        • 1970-01-01
        • 2018-07-26
        • 1970-01-01
        • 2015-01-08
        • 1970-01-01
        • 2017-01-09
        • 1970-01-01
        相关资源
        最近更新 更多