Создание массива пустых строк?
Есть ли простой способ создать массив пустых строк в 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,"");
Ответ 6
Самое простое в 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/
Ответ 7
Несмотря на то, что он не является широко доступным, как только браузер начнет поддерживать вычисления массива EcmaScript 6, вы сможете сделать что-то в соответствии с:
var n = 1000;
var empty_strs = ['' for (x of new Array(n))]