2010-11-18 10 views
2

자바 스크립트 비교에 대해 혼란스러워합니다. 말하자면 :자바 스크립트 비교 표현

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

array1 == array2 ; 
false // why false ? 

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

아무도 나에게 이것을 명확하게 설명 할 수 있습니까? 미리 감사드립니다.

답변

4

두 개의 서로 다른 Array 인스턴스를 비교하기 때문에 false입니다. 실제로 인스턴스에 대한 참조 인 경우에만 true입니다.

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

array1 == array2 ; // true 

각 내용을 비교하려면 각 항목을 개별적으로 비교해야합니다. 이것은 하나의 레벨보다 더 깊어 보이지 않지만, 이와 비슷한 것입니다.

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 
관련 문제