【发布时间】:2012-02-23 00:38:10
【问题描述】:
我的完整代码:
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,它会提示“存在”,而 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.
});
我很困惑试图解决这个问题几个小时。
【问题讨论】:
-
你为什么要将
inArray的结果与字符串进行比较?! -
另外,为什么要使用之后要立即覆盖的值来初始化数组?
-
因为我正在编写井字游戏(与 PC 相比)。第一个玩家的位置将保存在一个数组中。并且此数组中的元素将使用组合进行检查。然后我进行组合,对其进行编程,以便 PC 响应并进行逻辑播放。
-
能否分享您的完整代码。它对我有用。见jsfiddle.net/gApqm/4
-
@Freetalk13:恐怕你还没有理解我的两个cmets。 1、
inArray的结果是一个数字;将其与数字而不是字符串进行比较。 2. 当您要立即使用a[0] = ...; a[1] = ...; a[2] = ...; a[3] = ...;跟随它时执行a = [1, 2, 3, 4];是没有意义的,您正在覆盖用于初始化它的数据。只需使用a = [];开始。或者更好的是,一次全部初始化:pastie.org/3288165
标签: jquery arrays each utilities