JasonMacD Ответов: 3

Как сравнить 2 массива и проверить, является ли какой-либо элемент одинаковым в jQuery/Javascript


Итак, у меня есть эти два массива, и я пытаюсь выдать предупреждение, если в обоих массивах есть какой-либо один и тот же элемент, у любого тела есть какой-либо опыт с этим?

var selectedFacils = [];
var selectedExcludeFacils = [];
$("#selectFacilParams_chosen").find(".search-choice").each(function () {
    var elem = jQuery(this).text();
    selectedFacils.push(elem);
});
$("#selectFacilParamsExclude_chosen").find(".search-choice").each(function () {
    var elem = jQuery(this).text();
    selectedExcludeFacils.push(elem);
});

Sergey Alexandrovich Kryukov

Любой на той же позиции, или сравнить всех со всеми?
—СА

JasonMacD

Позиционирование не имеет значения, просто если есть какие-либо совпадения вообще где-либо.

3 Ответов

Рейтинг:
25

Sergey Alexandrovich Kryukov

Спасибо за разъяснение. Это означает, что вам нужно выполнить N * M сравнений, Где N и M-длины двух массивов. Сделайте это в двух вложенных циклах.

Это просто-ваши ключи массива являются последовательными целыми числами, и вы знаете их размеры. В Javascript любой массив является ассоциативным контейнером с любыми ключами. Если это вас беспокоит, вы можете использовать Object.keys и повторять по клавишам. Пожалуйста смотрите:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/keys[^].

Для лучшей альтернативы проанализируйте, как вы в конечном итоге получаете два разных массива с повторяющимися объектами, и подумайте о том, чтобы предотвратить эту ситуацию в первую очередь, когда вы добавляете объекты в массив.

—СА


Abhinav S

5. однако я рекомендовал несколько иной подход.

Sergey Alexandrovich Kryukov

Спасибо, Абхинав.
—СА

Рейтинг:
1

Abhinav S

Если позиции не имеют значения и длины массивов одинаковы, я бы рекомендовал вам отсортировать два массива, а затем сравнить значения массива один за другим.

Если длины массивов неодинаковы, можно использовать принципы алгоритма сортировки слиянием и получить список элементов, общих для обоих массивов.


Sergey Alexandrovich Kryukov

Имеет смысл, можно было бы оптимизировать его, 5.
—СА

Abhinav S

Спасибо, СА.

JasonMacD

Длины массивов, скорее всего, не будут одинаковыми, это входы param (включенные/исключенные). Если вход включен, он не может быть исключен, и наоборот. Есть какие-нибудь примеры кода на этот счет?

Abhinav S

https://vikasrao.wordpress.com/tag/compare-2-arrays-javascript/

Рейтинг:
1

Member 14896981



ВАР А1=[{столбец empname:"Хегде"},{столбец empname:"Вики"}]
ВАР А2=[{столбец empname:"Хегде",зарплата:30000},{столбец empname:"savrav",зарплата:от 2323}]

функция f(a1,a2){
var b=[];
for(var i=0;i<a2.length;i++) {
var found = false;
for(var j=0;j<a1.length;j++) {
если(A1[я].столбец empname==А2[Дж].столбец empname){
нашли = истина;
}
}
если(!найдено) {
б.толчок(А2[я].столбец empname);
}
}
вернуться б;
}
консоли.отчет(Ф(А1,А2));



CHill60

По сути это перепев решения 1 от 6 лет назад