2010-04-10 5 views
4

Existe-t-il un équivalent Javascript de la méthode qw() de Perl pour créer rapidement des tableaux? -à-direDéclaration de tableau rapide Javascript

in Perl @myarray = qw/one two three /; 
in Javascript var myarray = ('one', 'two', 'three'); // any alternative?? 

Répondre

6

Pour 'rapidement' écrire un tableau, vous pouvez le faire:

var x = 'foo bar baz'.split(' '); 

Surtout pour les grands tableaux, ce qui est légèrement plus facile à taper que:

var x = ['foo', 'bar', 'baz']; 

Bien évidemment, l'utilisation .split() est beaucoup moins performant que simplement écrire sur le tableau entier.

+4

À mon humble avis, la première méthode est mauvaise. Il n'est pas nécessaire de passer du temps d'exécution inutile * à chaque fois * le script est exécuté juste pour vous épargner quelques coups de touches * une fois *. –

+1

À mon humble avis, la maintenabilité et la lisibilité l'emportent sur une augmentation extrêmement mineure du temps d'exécution. – rjh

+1

@ Johnson Johnson: Exactement! C'est pourquoi je recommande de taper tout le tableau à la place. –

-2
var array:Array = [ 1 , 2 , 3 ]; 
var dictionary:Object = { a:1 , b:2 , c:3 }; 
+1

il ne compile pas (dans FF au moins). Je peux faire var array = [1, 2, 3]; mais pas var array = [un, deux, trois]. – portoalet

+1

Citez vos chaînes: 'var array = ['un', 'deux', 'trois']' –

+0

@Nikki Je pense que le point est qu'il * ne * veut pas citer toutes les chaînes. – deceze

4

Il n'y a pas construit en construction, mais vous pouvez faire une des opérations suivantes:

var myarray = 'one two three'.split(' '); // splits on single spaces 

ou

function qw (str) {return str.match(/\S+/g)} 

var myarray = qw(' one two three '); // extracts words 
+0

Pourquoi '.split (/ \ s + /)' et pas '.split ('')'? Ce dernier semble être plus rapide. –

+0

@Mathias => L'opérateur 'qw //' de Perl se divise sur les espaces blancs de largeur variable. J'ai mis à jour ma réponse pour inclure le split de char simple plus rapide, et un clone 'qw' –

+0

Cool, je ne savais pas' qw // 'travaillé comme ça. Merci pour votre explication! –