Рейтинг:
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.
—СА
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 лет назад