2010-09-12 4 views
6

J'essaie d'importer un ensemble de coordonnées à partir d'un javascript externe. Je dois inclure environ 78.740 éléments dans le constructeur, mais firefox renvoie juste une erreur:
"trop ​​d'arguments constructeurs"
Quelqu'un a-t-il des idées?javascript trop d'arguments constructeurs

Ceci est mon code:

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

Alors qu'ils existent, ne jamais utiliser les constructeurs de tableau ou un objet, utilisez littéraux sur 'new Array/Object' . – BGerrissen

+1

+1 LOL pour l'exemple de code –

+1

BGerrissen: c'est un peu dogmatique. Je suis d'accord que les littéraux sont généralement préférables, mais il y a des occasions où le constructeur 'Array' est utile. Par exemple: 'var hugeString = new Array (1e6) .join (" x ");' –

Répondre

9

Essayez tableau littéral, il a travaillé pour moi (testé avec succès pour millions d'articles):

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

Gah, je tape trop lentement. :-) –

+1

+1 Note de côté, longueur de tableau maximale est 4 294 967 295 mais doute que quiconque atteindra ce ^^ – BGerrissen

+1

avec 2 000 000 d'articles Firefox a jeté l'exception "quota de l'espace de pile de script est épuisé" – pepkin88

1

Vous pouvez exécuter dans les limites de la mémoire, pas sûr.

Que diriez-vous d'essayer de pousser() les valeurs dans un tableau au lieu de tous les initialiser tous en même temps? Brisez-le en plus petits morceaux de données à ajouter au tableau au lieu de l'ajouter en une seule commande.

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;