Как сравнить два массива (которые могут иметь: элементы DOM, числа, строки, массивы или словари), используя jQuery? - PullRequest
2 голосов
/ 01 сентября 2010

Я нашел этот метод:

Array.prototype.compare = function(arr) {
    if (this.length != arr.length) return false;
    for (var i = 0; i < arr.length; i++) {
        if (this[i].compare) {
            if (!this[i].compare(arr[i])) return false;
        }
        if (this[i] !== arr[i]) return false;
    }
    return true;
}


var a = ['aa',[1,2,3]]
var b = ['aa',[1,2,3]]
alert(a.compare (b))

.
Но когда я делаю глубокое сравнение, он возвращает false.

Так какой метод вы используете для сравнениядва массива, используя jquery?

Спасибо

1 Ответ

1 голос
/ 01 сентября 2010

Для этого нет решения jQuery - jQuery в основном используется для манипулирования DOM, ajax и некоторых простых анимаций.Он поставляется с небольшим набором утилит, но, насколько я знаю, ни одна из них не имеет этой функции.

Однако я нашел ошибку в вашем коде.

Array.prototype.compare = function(arr) {
    if (this.length != arr.length) return false;
    for (var i = 0; i < arr.length; i++) {
        if (this[i].compare) {
            if (!this[i].compare(arr[i])) return false;
        } else { // <-- Here!
            if (this[i] !== arr[i]) return false;
        }
    }
    return true;
}

Вам необходимо использовать if - else здесь вместо того, чтобы снова запускать обе функции .compare и сравнивать их с оператором равенства.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...