它为什么会返回' -1'而不是索引jQuery的索引

时间:2017-03-23 05:07:40

标签: javascript jquery arrays

我正在运行' for'循环以检查winOptions数组中的元素是否在oneNums数组中。但是,每次使用indexOf属性时,即使数字位于-1数组中,它也会发回oneNums。它是否可能返回,因为['1','2'][1,2]不同?我怎样才能解决这个问题。

我有这些变量:

 var oneNums = [];
 var winOptions = [[1,2,3],[4,5,6],[7,8,9],[1,5,9],[3,5,9],[1,4,7],[2,5,8],[3,6,9]];
 var a;

这个jQuery函数:

$('.btn-xo').click(function(){
  if (turn === 'one'){
    $(this).text(pickOne);
    $(this).prop('disabled', true);
    oneNums.push($(this).val());
    oneNums.sort(function(a, b){
      return a - b;
    });
    for(var i = 0; i < winOptions.length; i++){
      for(var j = 0; j < winOptions[i].length; j++){
        a = oneNums.indexOf(winOptions[i][j]);
        if (a === -1){
          p1 = [];
          break;
        } else {
          p1.push(oneNums[a]);
          console.log('aca');
        }
      }
    }
    console.log(a);
    turn = 'two';
    count += 1;        
  }

1 个答案:

答案 0 :(得分:2)

带有数字的

indexOf字符串将失败。因此,number更改为string

首先使用.toString()

将数字转换为字符串
for(var i = 0; i < winOptions.length; i++){
      for(var j = 0; j < winOptions[i].length; j++){
        a = oneNums.indexOf((winOptions[i][j]).toString());
        if (a === -1){
          p1 = [];
          break;
        } else {
          p1.push(oneNums[a]);
          console.log('aca');
        }
      }
    }

检查这两个例子,

<强> ['1','2'].indexOf(1); o/p ===> -1

<强> ['1','2'].indexOf((1).toString()); o/p ===> 0