我的完整代码:
jQuery.extend({
combinationCheck: function (p1position) {
var Combination = [1, 2, 3, 4, 5, 6, 7, 8];
Combination[0] = [1, 2, 3];
Combination[1] = [4, 5, 6];
Combination[2] = [7, 8, 9];
Combination[3] = [1, 4, 7];
Combination[4] = [2, 5, 8];
Combination[5] = [4, 6, 8];
Combination[6] = [1, 5, 9];
Combination[7] = [3, 5, 7];
$.each(p1position, function (index, value) {
var num = value;
if ($.inArray(String(value), Combination[1]) != '-1') {
alert("there");
}
else {
alert("not there");
}
});
});
所以它有效。如果我将num设置为5,则警告“is there”,并且8 - > “不在那里”。 但问题是我有另一个阵列。
p1position = [1,5];
并浏览数组..
$.each(p1position,function(index,value){
var num = value;
//then call the jQuery.inArray function as written above, it always return not there. even though 5 is in the Combination[1] array.
});
我很困惑,试图解决这个问题几个小时。
答案 0 :(得分:0)
您要问的代码的具体问题是您在检查之前将值转换为字符串:
if ($.inArray(String(value), Combination[1]) != '-1') {
// ^^^^^^^^^^^^^
inArray
执行===
(严格相等)检查,"1" !== 1
。该行应为:
if ($.inArray(value, Combination[1]) !== -1) {
的变化:
请勿将value
变为字符串。
将结果与-1
(数字)进行比较,而不是"-1"
(字符串)。 inArray
会返回一个数字。
使用!==
而不是!=
(这主要是时尚问题,如果您愿意,可以使用!=
。)
但该代码存在多个其他问题。
您错过了}
,因此您说的代码是完整代码无法解析的。
每次调用Combination
时,您都会重新创建combinationCheck
。如果你的目标是创建一个Tic-Tac-Toe游戏,那么你需要能够在两次检查之间保持Combination
状态。
这是一组相当少的修复:
(function() {
var Combination = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9],
[1, 4, 7],
[2, 5, 8],
[4, 6, 8],
[1, 5, 9],
[3, 5, 7]
];
jQuery.extend({
combinationCheck: function (p1position) {
$.each(p1position, function (index, value) {
if ($.inArray(value, Combination[1]) !== -1) {
alert(value + " is there");
}
else {
alert(value + " is NOT there");
}
});
}
});
})();
......给出了:
jQuery.combinationCheck([1, 5]);
...报告找不到1
,但5
是。