Перейти к содержимому

Как сравнить два массива

  • автор:

Как сравнить два массива 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 комментария

Ckomop0x

vetero4eg

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

a1 = [1,1,1,1] a2 = [1,1,1]

IonDen

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 комментария

geek01

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

geek01

А, все нормлано, это не возможности 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

Comparing arrays in 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 , указывая на то, что массивы одинаковы.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

https://kapelnicza.vyvod-iz-zapoya-na-domu-voronezh.ru/