2010-09-12 20 views
6

Estoy tratando de importar un conjunto de coordenadas desde un javascript externo. Tengo que incluir aproximadamente 78.740 elementos en el constructor, pero firefox solo arroja un error:
"demasiados argumentos de constructores"
¿Alguien tiene alguna idea?JavaScript demasiados argumentos de constructor

Este es mi código:

 
function CreateArray() { 
return new Array(
... 
... 
... 
78.740 elements later 
... 
); } 
+0

Mientras que existen, nunca utilice matriz u objeto en constructores, literales uso sobre 'new Array/Objeto' . – BGerrissen

+1

+1 LOL para el código de muestra –

+1

BGerrissen: eso es un poco dogmático. Estoy de acuerdo en que los literales son generalmente preferibles, pero hay ocasiones en que el constructor 'Array' es útil. Por ejemplo: 'var hugeString = new Array (1e6) .join (" x ");' –

Respuesta

9

Try literal de matriz, que trabajó para mí (probado con éxito para millones de artículos):

function CreateArray() { 
    return [ 
     ... 
    ]; 
} 
+0

Gah, escribo demasiado lento. :-) –

+1

+1 Nota al margen, max array length es 4,294,967,295 pero duda cualquiera alcanzará eso ^^ – BGerrissen

+1

con 2,000,000 de elementos Firefox lanzó excepción "la cuota de scripts se ha agotado" – pepkin88

1

Puede estar ejecutando en las limitaciones de memoria, no estoy seguro.

¿Qué hay de intentar presionar() los valores en una matriz en lugar de inicializarlos todos a la vez? Divídalo en trozos más pequeños de datos para agregar a la matriz en lugar de agregarlo todo en un solo comando.

var a = []; 
a.push(1,2,3,4,5,6,7,8,9,10); 
a.push(1,2,3,4,5,6,7,8,9,10); 
a.push(1,2,3,4,5,6,7,8,9,10); 
a.push(1,2,3,4,5,6,7,8,9,10); 
// etc... 
return a; 
Cuestiones relacionadas