Gli array sono oggetti in JavaScript, che sono passaggio per riferimento. Ciò significa che quando inizializzo un array:
var array = [1, 2, 3];
Ho creato un riferimento a tale array in memoria. Se io poi dire: (., Anche se i valori sono uguali)
var otherArray = [1 2, 3];
array e otherArray hanno due punti diversi in memoria in modo che non sarà uguale a vicenda per testare il passaggio per riferimento si può giocare con le matrici di facendo:
var copyArray = array;
in questo caso, copyArray fa riferimento lo stesso indirizzo di memoria, come matrice in modo:
copyArray === array; //will evaluate to true
array.push(4); //copyArray will now have values [1, 2, 3, 4];
copyArray.push(5); //array will have values [1, 2, 3, 4, 5];
copyArray === array; //still true
al fine di testare l'uguaglianza di valori in una matrice o un oggetto yo è necessario fare un "confronto approfondito" - per gli array questo attraverserà entrambi gli array per confrontare indice e valore per vedere se entrambi sono uguali - per gli oggetti attraverserà ogni chiave e si assicurerà che il valore sia lo stesso. Per ulteriori informazioni su confronti profondi è possibile controllare l'underscore.js fonte annotato:
http://underscorejs.org/docs/underscore.html
fonte
2015-06-13 16:09:55
Né '==', nè '' === fare elemento saggio confronto. Entrambi controllano se entrambi gli array sono la stessa cosa. – thefourtheye
Questo perché gli array sono oggetti in JavaScript. Potresti dare un'occhiata a questo http://stackoverflow.com/questions/22395357/how-to-compare-two-arrays-are-equal-using-javascript-or-jquery – ankur