2010-11-18 13 views
2

Je suis confus au sujet de la comparaison de javascript. disons:Javascript Expression de comparaison

var array1 = [1,2,3]; 
var array2 = [1,2,3]; 

array1 == array2 ; 
false // why false ? 

array1 === array2; 
false // also why false? 

Quelqu'un peut-il m'expliquer clairement? Merci d'avance.

Répondre

4

Ils sont faux car vous comparez deux instances de tableau différentes. Cela ne sera vrai que si elles sont des références à la même instance.

var array1 = [1,2,3]; 
var array2 = array1; 

array1 == array2 ; // true 

Pour comparer leur contenu, vous devez comparer chaque élément individuellement. Quelque chose comme ça, même si cela ne semble pas plus profond que le seul niveau.

var array1 = [1,2,3]; 
var array2 = [1,2,3]; 

function compareArrays(a1,a2) { 
    var len = a1.length; 
    if(len !== a2.length) 
     return false; 
    while(len--) { 
     if(a1[ len ] !== a2[ len ]) { 
      return false; 
     } 
    } 
    return true; 
} 

compareArrays(array1, array2); // true