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.
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.
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(" ");
Vous pouvez obtenir un tableau définissant la taille et le remplir avec un jeton.
var n = tableau (taille) .fill ("");
Vous pourriez en faire une fonction:
function stringArray(length) {
var arr = [];
for(var i = 0; i < length; ++i) { arr.Push(''); }
return arr;
}
Vous pouvez faire quelque chose comme ça:
var someLength = 10;
var empty = Array.apply(0, Array(someLength)).map(function(){return '';});
// result: ["", "", "", "", "", "", "", "", "", ""]
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
#...
Juste pour le fun
var empty = Array.apply(null, new Array(someLength)).map(String.prototype.valueOf,"");
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))]
Vous pouvez essayer de le faire de cette manière:
let n = 1000;
var emptyStrings = [...Array(n)].map(() => '')