Cambiare il valore di un array cambia l’array JavaScript originale

Il seguente codice fa sì che entrambi gli elementi di id 0 siano impostati su - , anche se voglio che sia impostato su -1 . Sto solo creando un riferimento al labelArray, o è qualcos’altro?

 labelArray.sort(compare); valueArray = labelArray; valueArray[0] = '-1'; labelArray[0] = '-'; 

Tutto l’aiuto è apprezzato.

Sì. valueArray e labelArray riferimento allo stesso array sottostante. Per fare una copia, usa slice () :

 valueArray = labelArray.slice(0); 

NOTA: Slice () copia solo 1 livello in profondità, che funziona bene per gli array primitivi. Se la matrice contiene oggetti complessi, usa qualcosa come clone di jQuery () , credit @Jonathan.

Sto solo creando un riferimento al labelArray […]?

Si, esattamente. valueArray e labelArray identificano ancora lo stesso object, che non è stato copiato.

valueArray è solo un riferimento a labelArray .

Quello che vuoi fare è clonare l’array. Puoi farlo usando jQuery.clone () o una funzione di clonazione simile.