L0re666
@L0re666

Как сравнить между собой несколько массивов и найти сходства и различия?

Мне нужно сравнить больше двух массивов и найти сходства и различия.
  • Вопрос задан
  • 190 просмотров
Пригласить эксперта
Ответы на вопрос 2
@Smirator
Нельзя просто так сравнивать массивы.
Нужно преобразование в строку. Например, так:

const compareArrays = (a, b) => {
  return JSON.stringify(a) === JSON.stringify(b);
};

let array1 = [11, 22, 33];
let array2 = [21, 22, 23];
let array3 = [11, 22, 33];

console.log(compareArrays(array1, array2)); //false
console.log(compareArrays(array1, array3)); //true


Или так:
let array1 = [11, 22, 33];
let array2 = [11, 22, 33];

console.log(array1.toString() === array2.toString()); //true


Если массивов много и их нужно постоянно сравнивать, то можно создать отдельную функцию для этого. Это будет самый правильный вариант из предложенных.
Вот:
const compareArrays = (a, b) => {
  return a.toString() === b.toString();
};

let array1 = [11, 22, 33];
let array2 = [21, 22, 23];
let array3 = [11, 22, 33];

console.log(compareArrays(array1, array2)); //false
console.log(compareArrays(array1, array3)); //true


Сделаю оговорку, что это не единственный способ сравнения. Можно использовать еще метод every() или цикл for(). Под ваш вопрос, мне показалось, наиболее правильным преобразование в строковый формат.
Ответ написан
Stalker_RED
@Stalker_RED
вы меня не поняли, мне нужно узнать как сравнить БОЛЬШЕ двух массивов. На ресурсах, предложенных вами есть сравнение только двух массивов, это я и сам нашел.

Нужно больше конкретики, что и с чем вы хотите сравнить и сколько массивов всего (хоть примерно).

Если сравнить каждый с эталонным, то просто пишете функцию сравнения и запускаете ее в цикле для всех.
Предположим есть массивы myArrays = [a, b, c,d, e, f]; и нужно сравнить их все с "a"
for( let i = 1; i < myArrays.length; i++) {
  myCompareFunc(a, myArrays[i]);
}


Предположим вы решили сравнить все со всеми, и у вас этих массивов заметно побольше двух. Тогда все сложно, и вот почему:
предположим у вас три массива a, b, c.
Тогда сравнить надо ab, ac, bc. Ввсего три сравнения, все просто.
Предположим их четыре: a,b,c,d. Тогда сравнений будет ab,ac,ad,bc,bd,cd. Шесть штук, норм.
Предположим, что нужно шесть сравнить. (a,b,c,d,e,f)
ab,ac,ad,ae,af,bc,bd,be,bf,cd,ce,cf,de,df,ef - пятнадцать штук. Вы уже начинаете что-то подозревать?
6! / ((6-2)! * 2)
Это называется сочетания.
Уже для 10 будет
10! / ((10-2)! * 2) = 45 сочетаний, и дальше это число будет расти.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы