创build空string的数组?

有一种简单的方法来在JavaScript中创build一个空string数组? 目前唯一可以考虑的方法是循环:

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

但我想知道是否有一些方法来做到这一点使用普通的JavaScript或coffeescript一行。

更新:在较新的浏览器上 – 使用.fillArray(1000).fill('')将创build一个由1000个空string组成的数组。


是的,有一个方法:

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

我可能会使用循环虽然,它expression意图更清晰。

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

这样,完全清楚你正在做什么,你可以重复使用它。

在Array和String上使用generics原型的方法如下:

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

编辑:现在有更简单的方法,其中一些是可读的:

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

可以做一个function:

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

你可以做这样的事情:

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

只是为了好玩

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

在CoffeeScript中最简单的做法是使用循环理解 :

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

演示: http : //jsfiddle.net/ambiguous/b9Vj9/

尽pipe不是广泛可用的,但是一旦浏览器开始支持EcmaScript 6数组parsing,您将能够做到以下几点:

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