web-dev-qa-db-fra.com

Création d'un tableau de chaînes vides?

Existe-t-il un moyen simple de créer un tableau de chaînes vides en javascript? Actuellement, le seul moyen auquel je peux penser est de le faire en boucle:

var empty = new Array(someLength);
for(var i=0;i<empty.length;i++){
    empty[i] = '';
}

mais je me demande s’il existe un moyen de le faire en une ligne en utilisant soit du javascript normal, soit du coffeescript.

16
Abe Miessler

Mise à jour: sur les nouveaux navigateurs - utilisez .fill: Array(1000).fill('') créera un tableau de 1000 chaînes vides. 


Oui, il y a un moyen: 

 var n = 1000;
 Array(n).join(".").split("."); // now contains n empty strings.

J'utiliserais probablement la boucle cependant, elle traduit une intention plus claire.

function repeat(num,whatTo){
    var arr = [];
    for(var i=0;i<num;i++){
        arr.Push(whatTo);
    }
    return arr;
}

De cette façon, ce qui est fait est parfaitement clair et vous pouvez le réutiliser. 

43
Benjamin Gruenbaum

voici une manière plus simple d'utiliser des protos génériques sur Array et String:

"".split.call(Array(1001), ",")

EDIT: Il existe maintenant des moyens encore plus simples, dont certains sont lisibles:

Array(1000).fill("");

" ".repeat(999).split(" ");
9
dandavis

Vous pouvez obtenir un tableau définissant la taille et le remplir avec un jeton.

var n = tableau (taille) .fill ("");

1
user2592256

Vous pourriez en faire une fonction:

function stringArray(length) {
    var arr = [];
    for(var i = 0; i < length; ++i) { arr.Push(''); }
    return arr;
}
1
qwertynl

Vous pouvez faire quelque chose comme ça:

var someLength = 10;
var empty = Array.apply(0, Array(someLength)).map(function(){return '';});
// result: ["", "", "", "", "", "", "", "", "", ""]
0
nderscore

La chose la plus simple à faire dans CoffeeScript est d’utiliser une compréhension loop :

a = ('' for i in [0 ... someLength]) # Note: 3 dots
a = ('' for i in [1  .. someLength]) # Or 2 dots and start at 1
#...

Démo: http://jsfiddle.net/ambiguous/b9Vj9/

0
mu is too short

Juste pour le fun

var empty = Array.apply(null, new Array(someLength)).map(String.prototype.valueOf,"");
0
epascarello

Bien que les navigateurs ne soient pas largement disponibles, une fois que les navigateurs commenceront à prendre en charge les systèmes de compréhension de tableaux EcmaScript 6, vous pourrez faire quelque chose comme:

var n = 1000;
var empty_strs = ['' for (x of new Array(n))]
0
rdodev

Vous pouvez essayer de le faire de cette manière:

let n = 1000;
var emptyStrings = [...Array(n)].map(() => '')
0
Evan Ross