2013-11-15 95 views
12

有沒有一種簡單的方法來在JavaScript中創建一個空字符串數組?目前我能想到做到這一點的唯一方法是使用一個循環:創建空字符串數組?

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

,但我不知道是否有某種方式在同一行要做到這一點無論是使用常規的JavaScript或CoffeeScript的。

回答

37

更新:在較新的瀏覽器上 - 使用.fillArray(1000).fill('')將創建一個包含1000個空字符串的數組。


是的,有一種方法:

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

我可能會使用循環雖然,它傳達的意圖更清晰。

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

這樣,完全清楚正在做什麼,您可以重複使用它。

+3

+1爲了聰明,並提及使用循環意圖清晰。 –

+1

這是一個很酷的想法:-)第二個函數看起來很熟悉;-) – qwertynl

+3

*(靜靜地等待某人拾取一個索引偏移量)* –

1

可以使得函數出來的:

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

你可以做這樣的事情:

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

如果有人想知道它是如何工作的http: //stackoverflow.com/questions/18947892/creating-range-in-javascript-strange-syntax :) –

0

只是爲了好玩

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

用於'valueOf'的巧妙技巧+1。附註 - 新在這裏是多餘的。 –

+0

稍微短一些:'String(Array([length]))。split(',')。map(String.prototype.valueOf,'')' – KooiInc

+0

什麼是downvotes?只是好奇,因爲它的作品。 – epascarello

0

最簡單的事情在CoffeeScript中做的是使用loop comprehension

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/

+0

用一些打高爾夫球來保存三個字符;-)'[1..5] .map( - >'')' – joeytwiddle

8

這裏使用的數組和字符串通用PROTOS一個簡單的方法:

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

編輯:現在有更簡單的方法,其中一些是可讀:

Array(1000).fill(""); 

" ".repeat(999).split(" "); 
+0

(產生1001個空字符串。) – joeytwiddle

0

雖然沒有廣泛使用,但一旦瀏覽器開始支持EcmaScript 6 array co你可以做一些事情:

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

這些不再是ECMAScript 6的一部分。(考慮ES7) –

+0

@BenjaminGruenbaum嘆息......真的嗎?主要的失望=( – rdodev

+0

在這一點上不考慮ES9 –

0

你可以得到一個數組來定義大小並用一些標記來填充它。

var n = Array(size).fill(「」);

+0

歡迎使用StackOverflow:如果您發佈代碼,XML或數據示例,請在文本編輯器中突出顯示這些行,然後單擊「代碼示例」按鈕({})編輯器工具欄或在鍵盤上使用Ctrl + K進行恰當的格式化和語法突出顯示! – WhatsThePoint

+0

這個答案補充說明在接受的答案中不是更好的表達方式嗎? – Mogsdad