Создание массива пустых строк?

Есть ли простой способ создать массив пустых строк в javascript? В настоящее время единственный способ, которым я могу это сделать, - это цикл:

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

но мне интересно, есть ли способ сделать это в одной строке, используя обычный javascript или coffeescript.

Ответ 1

Обновление: в новых браузерах - используйте .fill: Array(1000).fill('') создаст массив из 1000 пустых строк.


Да, есть способ:

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

Я бы, вероятно, использовал цикл, хотя он передает намерение clearer.

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

Таким образом, он прекрасно понимает, что делается, и вы можете его повторно использовать.

Ответ 2

здесь более простой способ использования общих протосов для массива и строки:

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

EDIT: теперь есть еще более простые способы, некоторые из которых доступны для чтения:

Array(1000).fill("");

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

Ответ 3

Вы можете сделать из него функцию:

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

Ответ 4

Вы можете сделать что-то вроде этого:

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

Ответ 5

Просто для удовольствия

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

Ответ 7

Несмотря на то, что он не является широко доступным, как только браузер начнет поддерживать вычисления массива EcmaScript 6, вы сможете сделать что-то в соответствии с:

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