有没有一种简单的方法可以在javascript中创建一个空字符串数组?目前,我能想到的唯一方法是使用循环:
var empty = new Array(someLength);
for(var i=0;i<empty.length;i++){
empty[i] = '';
}
但我想知道是否有一些方法可以使用常规javascript或coffeescript在一行中完成此操作。
答案 0 :(得分:43)
更新:在较新的浏览器上 - 使用.fill
:Array(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;
}
这样,很清楚正在做什么,你可以重复使用它。
答案 1 :(得分:10)
这是一种在Array和String上使用泛型protos的简单方法:
"".split.call(Array(1001), ",")
编辑:现在有更简单的方法,其中一些是可读的:
Array(1000).fill("");
" ".repeat(999).split(" ");
答案 2 :(得分:3)
你可以得到一个定义大小的数组,并用一些标记填充它。
var n =数组(大小).fill(“”);
答案 3 :(得分:1)
你可以从中创建一个函数:
function stringArray(length) {
var arr = [];
for(var i = 0; i < length; ++i) { arr.push(''); }
return arr;
}
答案 4 :(得分:0)
你可以这样做:
var someLength = 10;
var empty = Array.apply(0, Array(someLength)).map(function(){return '';});
// result: ["", "", "", "", "", "", "", "", "", ""]
答案 5 :(得分:0)
只是为了好玩
var empty = Array.apply(null, new Array(someLength)).map(String.prototype.valueOf,"");
答案 6 :(得分: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
#...
答案 7 :(得分:0)
虽然没有广泛使用,但一旦浏览器开始支持EcmaScript 6阵列理解,您将能够做到以下几点:
var n = 1000;
var empty_strs = ['' for (x of new Array(n))]
答案 8 :(得分:0)
您可以尝试通过这种方式做到这一点:
let n = 1000;
var emptyStrings = [...Array(n)].map(() => '')
答案 9 :(得分:0)
使用Array.from
;
const n = 5;
const arr = Array.from({length: n}).map(el => "")
console.log(arr)