2014-04-21 12 views

risposta

2

Poiché non sono lo stesso oggetto, oggetto diverso mai identico uguale, quindi il risultato è false.

8

oggetti sono uguali per riferimento, [] è un oggetto nuovo, con un nuovo riferimento, la mano destra [] è anche un oggetto nuovo di zecca con un nuovo riferimento, in modo che non sono uguali, proprio come:

var user1 = new User(); 
var user2 = new User(); 
user1 === user2; // Never true 
1

See Object identity perché entrambi gli array creano una nuova istanza di array, quindi il confronto tra due diversi oggetti non è uguale. Il tuo codice è equivalente a:

var arr1 = [], 
    arr2 = []; 
arr1 == arr2; // false  

Due valori letterali valutano sempre due istanze diverse, che non sono considerate uguali.

0

Io in realtà non riuscivo a trovare il codice per verificare se un oggetto è un array di lunghezza (ad esempio array vuoto) da nessuna parte, così l'ho scritto molto veloce se qualcuno vuole un secondo momento:

function isArrayOfLength(obj, length) { 
    var isArrayOfSpecifiedLength = false; 

    if(Array.isArray(obj)){ 
     if(obj.length === length){ 
     isArrayOfSpecifiedLength = true; 
     } 
    } 

    return isArrayOfSpecifiedLength; 
    } 

E il test per esso:

(function(){ 
    var isValidArray = isArrayOfLength([], 0); 
    console.log(isValidArray); //true 
    })(); 

    (function(){ 
    var isValidArray = isArrayOfLength([1,2,3], 0); 
    console.log(isValidArray); //false 
    })(); 

    (function(){ 
    var isValidArray = isArrayOfLength([1,2,3], 3); 
    console.log(isValidArray); //true 
    })(); 

    (function(){ 
    var isValidArray = isArrayOfLength({notAnArray:true}, 0); 
    console.log(isValidArray); //false 
    })(); 

https://plnkr.co/edit/sjgnVoNAI0KUNCwhbdpx?p=preview

Problemi correlati