2012-08-17 15 views
5

Ho bisogno di un array tipizzato, in particolare un Float32Array, di tutti gli zeri. Stavo pensando che avrei dovuto cancellarlo manualmente, ma ho notato che quando l'ho dichiarato, era già stato azzerato. È qualcosa che è specificato nelle specifiche? Posso fare affidamento su questo comportamento?Gli array Javascript sono stati inizializzati su 0?

+0

Cosa intendi con "azzerato"? – KooiInc

+0

puoi mostrare il tuo codice? javascript non ha array digitati. Un array contiene tutto ciò che decidi di inserirvi; per esempio. '[1," ciao ", {a: 3}]' è un array valido in javascript. – jackwanders

+0

Questo è ciò che ottengo nella console di Google Chrome. 'a = new Float32Array (10)' restituisce '[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]'. Sto usando array digitati perché sto lavorando in WebGL. Sono diversi dall'array standard e dato che è principalmente per WebGL, è un po 'esoterico. Avrei dovuto specificarlo. – SharkCop

risposta

5

Secondo JavaScript's Typed Array Specification, contents are initialized to 0. Quindi dovresti essere in grado di fare affidamento su questo comportamento.

Tenere presente che gli array digitati don't have very good cross browser support yet. Chrome, Safari, Firefox e Opera lo supportano, ma Internet Explorer ha introdotto il supporto solo in IE10.

Vorrei anche ricordare che gli array digitati sono attualmente extremely slow in Safari rispetto ai normali array. Per questo motivo, probabilmente stai meglio evitando gli array digitati a meno che tu non stia mirando a Safari. Utilizzando matrici normali, tutti i valori di matrice vengono inizializzati come undefined.

-4

Per impostazione predefinita gli array contengono null se li si costruisce con una dimensione. Dal null == 0 potresti potenzialmente considerarlo riempito con 0 o qualsiasi altro valore di falsy. Tuttavia si incontrano problemi se si tenta di chiamare metodi sui numeri, ad esempio .toString. O se lo si esegue attraverso una funzione che prevede un modulo numerico come parseInt.

Idealmente, si dovrebbe sempre inizializzare una matrice in modo da sapere esattamente che cosa contiene, anche se personalmente non ho mai sentito parlare di array tipizzati in JS ...

+0

* Gli array di default contengono null se li costruisci con una dimensione *: no. Prova nella tua console: 'var a = []; a.length = 5; console.log (a [3]) 'o' var a = new Array (5); console.log (a [3]) ' – KooiInc

+0

Entrambi mi danno un array pieno di' null's, a meno che non mi fraintenda? –

+0

Forse c'è una differenza tra browser? Nella console di Chrome 'console.log (a)' mostra '[non definito × 5]' – KooiInc

Problemi correlati