¿Crear una matriz de cadenas vacías?

¿Existe alguna manera fácil de crear una matriz de cadenas vacías en javascript? Actualmente, la única forma en que puedo pensar es hacerlo con un ciclo:

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

pero me pregunto si hay alguna forma de hacerlo en una línea usando javascript o coffeescript regulares.

Actualización: en los browseres más nuevos: use .fill : Array(1000).fill('') creará una matriz de 1000 cadenas vacías.


Sí, hay una manera:

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

Sin embargo, probablemente usaría el loop, transmite una intención más clara.

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

De esta forma, está perfectamente claro lo que se está haciendo y puedes reutilizarlo.

aquí hay una manera más simple usando prototypes generics en Array y String:

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

EDITAR: ahora hay forms aún más simples, algunas de las cuales son legibles:

 Array(1000).fill(""); " ".repeat(999).split(" "); 

Podrías hacer una function de eso:

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

Podrías hacer algo como esto:

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

Solo por diversión

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

Lo más fácil de hacer en CoffeeScript es utilizar una comprensión de bucle :

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

Demostración: http://jsfiddle.net/ambiguous/b9Vj9/

Aunque no está ampliamente disponible, una vez que los browseres comienzan a admitir las comprensiones de matriz EcmaScript 6, usted podrá hacer algo como:

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