我正在运行' 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;
}
答案 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
强>