• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

question-closed Jak porównać dwa array?

VPS Starter Arubacloud
+1 głos
297 wizyt
pytanie zadane 26 lutego 2021 w JavaScript przez lukasz21 Obywatel (1,090 p.)
zamknięte 2 marca 2021 przez lukasz21

Witam,

 

Chciałbym porównać ze sobą dwie tablice w Javascript. Widziałem kilka wzorów kodu jak można to zrobić, ale nie wiem który z nich jest najlepszy. Dwa zamieszczone niżej wzory wydają mi się najlepsze.

 

Czytałem gdzieś , że metoda z JSON.stringify() nie zawsze zadziała dobrze. Czy są jakieś sytuacje kiedy nie powinno się polegać na tej metodzie i zamiast niej użyć inną?

 

Z góry dziękuje za odpowiedź.

 

Poniżej umieszczam cały kod i codepen

const array1 = ["red", "blue", "green"];
const array2 = ["red", "blue", "green"]; 


// ver 1
let w = JSON.stringify(array1) === JSON.stringify(array2);
document.querySelector('.a').innerHTML = w


// ver 2
function arraysAreIdentical(arr1, arr2) {
                if (arr1.length !== arr2.length) return false;
                for (var i = 0, len = arr1.length; i < len; i++) {
                    if (arr1[i] !== arr2[i]) {
                        return false;
                    }
                }
                return true;
}
document.querySelector('.a1').innerHTML = arraysAreIdentical(array1, array2)

 

komentarz zamknięcia: Odpowiedz w porzadku
komentarz 26 lutego 2021 przez VBService Ekspert (254,880 p.)

A czy taki scenariusz wchodzi w grę  smiley

const array1 = ["blue", "green", "red"];
const array2 = ["green", "red", "blue"]; 

bo bez

array1.sort();
array2.sort();

też zwraca - false;  wink

1 odpowiedź

+1 głos
odpowiedź 26 lutego 2021 przez Wiciorny Ekspert (273,950 p.)

a może tak metoda equals? :) 
 

[1, 2, [3, 4]].equals([1, 2, [3, 2]]) === false;
[1, "2,3"].equals([1, 2, 3]) === false;
[1, 2, [3, 4]].equals([1, 2, [3, 4]]) === true;
[1, 2, 1, 2].equals([1, 2, 1, 2]) === true;

pytanie  co oznacza u Ciebie "takie same tablice" - jeśli potraktujemy je faktycznie jako tablice - to jako struktura kolejność elementów jest ważna i wtedy [1,2,3] -> to nie jest [2,3,1] itd, natomiast jeśli traktujesz tablice jako zbiór to nie ważna jest kolejność elementów i wtedy wystarczy żeby miały te same elementy a nie ważna była kolejność 

komentarz 28 lutego 2021 przez lukasz21 Obywatel (1,090 p.)
W tym przypadku zakładam, że kolejność elementów w obu tablicach jest taka sama.

Podobne pytania

+1 głos
2 odpowiedzi 145 wizyt
pytanie zadane 13 lutego 2021 w JavaScript przez lukasz21 Obywatel (1,090 p.)
0 głosów
1 odpowiedź 176 wizyt
0 głosów
1 odpowiedź 133 wizyt
pytanie zadane 3 czerwca 2019 w JavaScript przez Artek97 Nowicjusz (120 p.)

92,770 zapytań

141,695 odpowiedzi

320,518 komentarzy

62,107 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...