Qual è il modo più efficiente per creare un array JavaScript riempito a zero di lunghezza arbitraria?Come creare un array JavaScript riempito a zero di lunghezza arbitraria?
risposta
ne dite di provare in questo modo:
Array.apply(null, new Array(10)).map(Number.prototype.valueOf,0);
//Output as [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
o
new Array(10+1).join('0').split('').map(parseFloat)
//Output as [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
EDIT: -
Se l'array è dinamico quindi è sufficiente che mettere in una funzione che prende un numero e sostituisci 10 con quella variabile.
la mia lunghezza dell'array è dinamica – user2814799
appena messo in una funzione che prende un numero e sostituisce 10 con quella variabile! – Shryme
@Shryme: - Grazie. L'ho aggiornato anche nella mia risposta! –
Un modo potrebbe utilizzare la ricorsione.
function fillArray(l, a) {
a = a || [];
if (0 < l) {
l -= 1;
a[l] = 0;
return fillArray(l, a);
}
return a;
}
avevo anche inviato un più classico un'opzione:
function fillArray(l) {
var a;
for (a = []; 0 < l; l-=1, a[l]=0);
return a;
}
function repeatArray(value, len){
var A=[],i=0;
while (i<len) A[i++]= value;
return A;
}
Per impostazione predefinita Uint8Array
, Uint16Array
e Uint32Array
classi mantenere zeri come è valori, in modo da non avete bisogno di tutte le tecniche di riempimento complessi , proprio:
var ary = new Uint8Array(10);
tutti gli elementi dell'array ary
saranno zeri di default.
Se si desidera una matrice di 9-length:
Array.apply(null, {length: 9}).map(function() {return 0;})
Se si desidera un array di X-length:
Array.apply(null, {length: X}).map(function() {return 0;})
Se si dispone di un array e vogliono riscrivere i suoi valori:
var arr=[54,53,6,7,88,76]
arr=arr.map(function() {return 0;})
È possibile riempire l'array con qualsiasi cosa si desideri, semplicemente modificando il valore su ritorno all'interno funzione all'interno .map:
Array.apply(null, {length: 9}).map(function() {return "a string";})
Array.apply(null, {length: 9}).map(function() {return Math.random();})
Array.apply(null, {length: 9}).map(function() {return NaN;})
Array.apply(null, {length: 9}).map(function() {return null;})
Array.apply(null, {length: 9}).map(function() {return true;})
Array.apply(null, {length: 9}).map(function() {return;})
L'ultimo riempirà la matrice con indefinito
Ho testato sia l'Unit8Array
[].slice.apply(new Uint8Array(n));
e il join/split method
new Array(n + 1).join('0').split('').map(parseFloat);
in jsPerf con risultati interessanti. Chrome e Firefox erano piuttosto lenti su entrambi i fronti (tra 48.000 e 76.000 operazioni). Ma Opera e Safari hanno entrambi funzionato incredibilmente bene con la funzione Uint8Array (fino a 438.000 operazioni). Penso che inizierò a usare Uint8Array e spero che Chrome e Firefox migliorino.
Le nuove estensioni di array ES6 consentono di eseguire questa operazione in modo nativo con il metodo fill
.Ora IE edge, Chrome e FF lo supporta, ma controlla il compatibility table
new Array(3).fill(0)
ti darà [0, 0, 0]
. È possibile riempire l'array con qualsiasi valore come new Array(5).fill('abc')
(anche oggetti e altri array).
In cima a quello è possibile modificare gli array precedenti con riempimento:
arr = [1, 2, 3, 4, 5, 6]
arr.fill(9, 3, 5) # what to fill, start, end
che ti dà: [1, 2, 3, 9, 9, 6]
Chiaramente il modo migliore e più semantico! – Casimir
in JavaScript ES6 c'è una soluzione molto semplice. Sono venuto qui perché sto cercando di codegolf più breve:
n = 999 // arbitrary length
a = Array(n).fill(0)
console.log(a)
Che dire di questo?
(new Array(123)).fill(0)
È molto semplice, elegante ed è possibile riempire array con qualsiasi valore.
- 1. Come creare un vettore numerico di lunghezza zero in R
- 2. Come creare un byte o un alone di una data lunghezza riempito di zeri in Python?
- 3. Come posso creare una rappresentazione di stringa senza riempimento di un numero in una base arbitraria?
- 4. Perché utilizziamo array a lunghezza zero anziché puntatori?
- 5. Zero lunghezza multidimensionale matrice
- 6. Gli array di lunghezza variabile a lunghezza zero sono consentiti/ben definiti?
- 7. Gestire interi di lunghezza arbitraria in C++
- 8. Numero intero di lunghezza arbitraria in Ada
- 9. regex a lunghezza zero e corrispondenze infinite?
- 10. Matrici di lunghezza zero in VBScript
- 11. Come unire due array per creare un array in JavaScript?
- 12. creare una matrice 2D zero riempito con quelli nelle posizioni indicizzate da un vettore
- 13. L'argomento è di lunghezza zero
- 14. Posso limitare la lunghezza di un array in JavaScript?
- 15. Controllo Lunghezza multidimensionali Gli array JavaScript
- 16. Come posso usare numeri interi di lunghezza arbitraria in Perl?
- 17. perché `x [0]` restituisce un vettore a lunghezza zero?
- 18. Come creare un array JavaScript "reale" in Rhino
- 19. javascript lunghezza array associativo utilizzando jQuery
- 20. Gli array di lunghezza variabile sono possibili con Javascript
- 21. Ottimo modo per creare una coda di blocco a lunghezza zero in Python
- 22. stringhe di archivio di lunghezza arbitraria in Postgresql
- 23. Come creare un suono da zero C#
- 24. partite di lunghezza zero in Java Regex
- 25. byte [] array a struct con array a lunghezza variabile
- 26. Array di lunghezza variabile
- 27. come creare un array associativo nella notazione letterale Javascript
- 28. Numpy sum lunghezza di corsa di valori diversi da zero
- 29. Come creare dinamicamente le variabili javascript da un array?
- 30. Ottenere la lunghezza di un array 'denominato'?
C'è qualche ragione per cui si desidera riempire a zero invece di un array di X riempito con 'indefinito' che può essere facilmente dichiarato come' nuovo Array (x) 'dove' x' è intero compreso tra 0 e 2^32 - 1. –
Una volta ho fatto una domanda molto simile, e ho trovato molte buone risposte: http://stackoverflow.com/questions/17776149/is-there-a-more-concise-way-to-initialize-empty-multidimensional -array –
possibile duplicato di [Il modo più efficiente per creare un array JavaScript riempito a zero?] (http://stackoverflow.com/questions/1295584/most-efficient-way-to-create-a-zero-filled-javascript- array) –