2016-03-29 31 views
0

İki tane listelem var. array1 == array2 çalıştırdığımda, konsol false'u yazdırır. Bunları değiştirip her bir öğe için eşitliği kontrol edersem, her seferinde true'u yazdırır. Sorun nedir? Safari konsolundan Javascript Dizi Eşitliği Hatası

for (var i=0; i<array1.length; i++) { 
    console.log(array1[i] == array2[i]); 
} 

:

enter image description here

Bütün google aramaları dizi fark dosyaları ve sırasız diziler kontrol eşitliği hakkında şeyler geldi. Aynı sırayla iki listenin problemini çözmenin daha kolay bir yolu olmalı diye düşündüm ve bunu online bulamadım.

+0

Bu şuna benzer: array1 = 0x234khwsio3 ve array2 = 0x2h29ouhwe. (Orada gerçek hex değerleri değil - sadece rastgele çöp.) Yani array1! = Dizi2 çünkü bellekte aynı konumda değiller. FAKAT! İçerikler aynıdır, çünkü listeler aynıdır. –

+0

@HankyPanky Evet, öyle. Afedersiniz. Tüm google aramaları dizi farkları hakkında bir şey ortaya koydu ve sıralanmamış dizilerin eşitliğini kontrol etti. Neden bu işe yaramadı Python arka planımla (her şeyin her zaman sihirli bir şekilde çalıştığı) bana kafa karıştırıcı ve sinir bozucu geliyordu. –

+0

@MarkManning'in işaret ettiği gibi, bellekte iki farklı yere işaret ediyorsunuz ve dolayısıyla eşit değiller. Ancak, dizileri derinlemesine karşılaştırdığınızda, bellekte aynı yerde bulunan değişmez sabitleri ('abc' bellekte her zaman aynı değerde olacaktır) karşılaştırırsınız ve dolayısıyla eşitliği görürsünüz. – char

cevap

1

kullanımı array1[i].equals(array2[i])== ile içeriği karşılaştırmıyorsunuzdur yorumlarda belirtildiği gibi.