Javascript 类型错误indexOf()不是for循环中的函数

Javascript 类型错误indexOf()不是for循环中的函数,javascript,Javascript,我看到还有其他类似名称的问题,我仔细看了一遍,它们并没有和我的问题相同的具体问题 出于某种原因,indexOf不是我的For循环中的函数。尝试在循环之外进行测试,结果很好,因此无法确定问题 function sym(args) { //new array var newArray = []; //loops through however many arguments are inputted for(var i=0;i<arguments.length;i++) {

我看到还有其他类似名称的问题,我仔细看了一遍,它们并没有和我的问题相同的具体问题

出于某种原因,indexOf不是我的For循环中的函数。尝试在循环之外进行测试,结果很好,因此无法确定问题

function sym(args) {
  //new array
  var newArray = [];

  //loops through however many arguments are inputted
  for(var i=0;i<arguments.length;i++) {
    //loops through each argument array's items
    for(var j=0;j<arguments[i].length;j++) {
      //if the newArray array doesn't have the array item, it adds it to the new array, to avoid duplicates.
      if(newArray.indexOf(arguments[i][j]) === -1) {
        newArray = newArray.push(arguments[i][j]);
      }
    }
  }
  return newArray;
}

sym([1, 2, 3], [5, 2, 1, 4]);

Array.push修改数组,不返回它,而是返回它的新长度,因此

newArray = newArray.push(arguments[i][j]);
简单使用

newArray.push(arguments[i][j]);

Array.push修改数组,不返回它,而是返回它的新长度,因此

newArray = newArray.push(arguments[i][j]);
简单使用

newArray.push(arguments[i][j]);
newArray.push返回被推送的数组的长度,而不是数组本身

删除newArray=newArray.pusharguments[i][j];只需将其设为newArray.pusharguments[i][j];错误应该消失。

newArray.push返回被推送的数组的长度,而不是数组本身

删除newArray=newArray.pusharguments[i][j];只需将其设为newArray.pusharguments[i][j];错误应该消失。

Array.prototype.push返回调用该方法的对象的新长度属性。看

在第一次循环迭代之后,newArray是一个数字,而不是数组

因此,修复代码:

 newArray.push(arguments[i][j]);
Array.prototype.push返回调用该方法的对象的新长度属性。看

在第一次循环迭代之后,newArray是一个数字,而不是数组

因此,修复代码:

 newArray.push(arguments[i][j]);

push实际返回数组的新长度,而不是null。push不返回null。array.push返回null否,它返回数组的新长度。push实际返回数组的新长度,而不是null。push不返回null。array.push返回null否,它返回数组的新长度。嗯,实际上,push返回数组的新长度。谢谢@RocketHazmat:-效果很好,谢谢!它让我感到困惑,因为我一直认为这是indexOf函数本身的问题。@jeff64 console.log是您的朋友:-好吧,实际上push返回数组的新长度。谢谢@RocketHazmat:-效果很好谢谢!这让我感到困惑,因为我一直认为这是indexOf函数本身的问题。@jeff64 console.log是您的朋友:-