Как сравнить два массива java
Чтобы сравнить два массива в Java, можно использовать статический метод equals() класса Arrays . Он возвращает true , если два массива эквивалентны и false в другом случае.
String[] animals1 = "cat", "dog">; String[] animals2 = "cat", "dog">; Arrays.equals(animals1, animals2); // true String[] fruits = "apple", "pear">; Arrays.equals(animals1, fruits); // false
как сравнить два массива в javascript
Прямое сравнение массивов всегда будет давать результат false . Поскольку массив, как объект, указывает на ссылку памяти, где хранится «значение». И эти ссылки всегда будут разными, за исключением случая когда мы сравниваем один и тот же объект (массив).
[1, 2, 3] === [1, 2, 3]; // false [1, 2, 3] > [1, 2, 3]; // false [1, 2, 3] [1, 2, 3]; // false
const a = [10, 11]; const b = a; console.log(a === b); // true
В последнем случае мы сравниваем один и тот же массив и получаем true , т.к. в b скопировалась ссылку на этот массив, а не значение.
26 сентября 2022
Для того чтобы сравнить два массива и получить результат — например список уникальных значений, можно воспользоваться вложенными циклами:
const arr1 = [1,2,3,6,5]; const arr2 = [1,6,7,8]; const result = []; for (let i = 0; i arr1.length; i++) for (let j = 0; j arr2.length; j++) if (arr1[i] === arr2[j]) result.push(arr1[i]) > > >
Как сравнить два массива в js?
Есть допустим 2 массива.
Одинаковые по содержимому, только в одном на один элемент больше.
Как их сравнить, что бы вытащить элемент которого не хватает во втором массиве?
Заранее спасибо.
- Вопрос задан более трёх лет назад
- 101401 просмотр
Комментировать
Решения вопроса 2
Stalker_RED @Stalker_RED
Обновил ответ, старая реализация была с багом.
function diff(a1, a2) < return a1.filter(i=>a2.indexOf(i)<0) .concat(a2.filter(i=>a1.indexOf(i) <0)) >function compare(a1, a2) < return a1.length == a2.length && a1.every((v,i)=>v === a2[i]) >
upd: в ES7 (2016) появился метод includes
const diff = function(a1, a2) < return a1.filter(i=>!a2.includes(i)) .concat(a2.filter(i=>!a1.includes(i))) >
Ответ написан более трёх лет назад
Нравится 9 2 комментария


Понимаю, что уже не актуально, но, это решение не поможет вернуть разницу, если элементы повторяются (по значению), ну например
a1 = [1,1,1,1] a2 = [1,1,1]

JavaScript developer. IonDen.com
Например вот так на lodash:
jsfiddle.net/IonDen/pgt8xdgw
var a = [1, 2, 3, 4, 5], b = [1, 2, 3, 4, 5, 6]; function diff (a, b) < if (a.length >b.length) < return _.difference(a, b); >else < return _.difference(b, a); >> console.log(_.difference(b, a)); // [6]
Ответ написан более трёх лет назад
Нравится 5 2 комментария

Я и не знал про такие возможнсти js)) Только вы забыли вывести саму функцию diff(b, a), вместо этого выводите сразу обработчик разницы без сравнения, какой массив больше

А, все нормлано, это не возможности js. Не заметил, что это доп библиотека.
Ответы на вопрос 2
Антон Шаманов @SilenceOfWinter
та еще зажигалка.
Как вариант можно сериализовать и сравнить строки банальным ==
Ответ написан более трёх лет назад
Комментировать
Нравится 2 Комментировать
электрик,усусь на front
Я только начинаю учить. Для меня более понятный такой формат кода. Может кому то поможет. Добавил сортировку от меньшего к большему и наоборот.
var a1 = [1,2,3,99,88,77,89,-99,-199] a2 = [1,2,3,8,89,9,-99,6,-77] function sortMyArray(a,b) < return b - a; >function sortMyArrayR(a,b) < return a - b; >function comparison () < return a1.filter(i=>a2.indexOf(i)<0).concat(a2.filter(i=>a1.indexOf(i) <0)) >write.innerHTML += "["+comparison(a1,a2).sort(sortMyArray)+"]"; arr.innerHTML += "["+ a1.sort(sortMyArray).toString()+"] \t["+a2.toString()+"]" writeRev.innerHTML += "["+comparison(a1,a2).sort(sortMyArrayR)+"]";
compare:
compareReverse:
Сравнение массивов в JavaScript

Часто разработчики сталкиваются с необходимостью сравнить два массива в JavaScript. Например, можно иметь два массива чисел и нужно узнать, содержат ли они одинаковые числа в одинаковом порядке. Интуитивно кажется, что для этого достаточно использовать оператор сравнения == или === . Однако, если попробовать сделать это, то результат может быть неожиданным.
var array1 = [1, 2, 3]; var array2 = [1, 2, 3]; console.log(array1 == array2); // Выводит false console.log(array1 === array2); // Выводит false
Причина этого в том, что операторы == и === сравнивают ссылки на объекты, а не их содержимое. В данном случае array1 и array2 — это разные объекты, хотя их содержимое одинаково.
Один из способов сравнить содержимое массивов — преобразовать их в строки с помощью метода JSON.stringify и сравнить полученные строки.
var array1 = [1, 2, 3]; var array2 = [1, 2, 3]; console.log(JSON.stringify(array1) == JSON.stringify(array2)); // Выводит true
Этот способ работает, но он может быть неэффективным для больших массивов, поскольку JSON.stringify преобразует весь массив в строку.
Более эффективным способом может быть использование цикла для проверки каждого элемента массива. Такой подход требует больше кода, но он работает быстрее для больших массивов и обеспечивает большую гибкость, так как можно управлять тем, как происходит сравнение элементов.
function arraysAreEqual(a, b) < if (a.length != b.length) return false; for (var i = 0; i < a.length; i++) < if (a[i] != b[i]) return false; >return true; > var array1 = [1, 2, 3]; var array2 = [1, 2, 3]; console.log(arraysAreEqual(array1, array2)); // Выводит true
В этом коде функция arraysAreEqual сначала проверяет, равны ли длины массивов. Если они не равны, то массивы точно не одинаковы, и функция возвращает false . Затем функция проходит по каждому элементу массива и сравнивает его с соответствующим элементом другого массива. Если она находит пару несовпадающих элементов, то она возвращает false . Если функция проходит через все элементы и не находит несовпадений, то она возвращает true , указывая на то, что массивы одинаковы.