Witam. W trakcie nauki JavaScriptu zauważyłem w kilku miejscach jego oryginalność, jednak ostatnie znalezisko (wykopalisko?) przerosło mnie. Otóż dwie identyczne tablice nie są sobie równe. Kto nie wierzy, niech sam sprawdzi:
javascript:a=[1];b=[1];alert(a==b)
Niby nie jest problemem ani napisanie funkcji, która porówna kolejne elementy listy, ani konwertowanie list do napisów, ale nie pałam miłością do sztuki prowizorki. Czy istnieje prostszy i pewniejszy sposób na porównywanie tablic?
Ryszard napisał(a):
Mnie się wydaje, że cała oryginalność polega na tym, że tablic nie można porównywać tak jak zmiennych. I chyba nie tylko w javascripcie nie można się odwoływać do całej tablicy czyli wszystkich jej elementów jednocześnie. Albo porównujesz dwa elementy tablicy
a[1]==b[1]
albo najpierw łączysz wszystkie elementy tablicy w jedną zmienną a dopiero potem porównujesz tak utworzone zmienne.
chocimir napisał(a):
Tablice nie są nawet zmiennymi, wiem o tym. Napisałem taką funkcję, aby porównywać zmienne:
function por_wnaj(a,b){
if (typeof(a)==typeof(b)){
if (typeof(a)=='object'){
if (a.length==b.length){
for (p=0;p<a.length;p++){
if (!por_wnaj(a[p],b[p])){
return false
}
}
return true
}else {return false}
}else {return (a==b)}
}else {return (a==b)}
}
Tylko że to nie jest żadne rozwiązanie, bo właściwie czyni operatory porównania bezużytecznymi. No cóż, skryptów Pythona w przeglądarce uruchomić się nie da.