Конкретная проблема с вашим кодом, о котором вы спрашиваете, заключается в том, что перед проверкой вы превращаете значение в строку:
if ($.inArray(String(value), Combination[1]) != '-1') {
// ^^^^^^^^^^^^^
inArray
выполняет проверку ===
(строгое равенство) и "1" !== 1
. Эта строка должна гласить:
if ($.inArray(value, Combination[1]) !== -1) {
Изменения:
Не превращайте value
в строку.
Сравните результат с -1
(число), а не "-1"
(строка). inArray
возвращает число.
Используйте !==
вместо !=
(это в основном вопрос стиля, вы можете использовать !=
, если хотите).
Существует несколько других проблем с этим кодом.
Вам не хватает }
, поэтому код, который вы говорите - ваш полный код, не анализируется.
Вы воссоздаете Combination
каждый раз, когда вызывается combinationCheck
. Если ваша цель - создать игру «Крестики-нолики», вам необходимо иметь возможность сохранять состояние 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
есть.
Живая копия