创建空字符串数组?
Posted
技术标签:
【中文标题】创建空字符串数组?【英文标题】:Creating array of empty strings? 【发布时间】:2013-11-29 05:20:28 【问题描述】:有没有一种简单的方法可以在 javascript 中创建一个空字符串数组?目前我能想到的唯一方法是使用循环:
var empty = new Array(someLength);
for(var i=0;i<empty.length;i++)
empty[i] = '';
但我想知道是否有某种方法可以使用常规 javascript 或咖啡脚本在一行中执行此操作。
【问题讨论】:
【参考方案1】:更新:在较新的浏览器上 - 使用 .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 表示聪明并提到使用循环使意图清晰。 这是一个很酷的主意 :-) 第二个函数看起来很熟悉 ;-) (静静地等待有人接听一个索引偏移量) 我想你的意思也是Array(n).join('.').split('.')
:)
split('.')
用原始的split('')
修复了一个错误的错误【参考方案2】:
你可以得到一个定义大小的数组并用一些标记填充它:
const arr = Array(size).fill("");
【讨论】:
欢迎来到 ***:如果您发布代码、XML 或数据示例,请在文本编辑器中突出显示这些行,然后单击编辑器工具栏上的“代码示例”按钮 ( ) 或使用 Ctrl键盘上的 +K 可以很好地格式化和语法突出显示它! 这个答案添加了什么在接受的答案中没有得到更好的表达? @Mogsdad 意图更清晰,更具可读性。最佳答案恕我直言。 PS:这会返回any[]
而不是 string[]
【参考方案3】:
这是一种在 Array 和 String 上使用泛型 protos 的更简单方法:
"".split.call(Array(1001), ",")
编辑:现在有更简单的方法,其中一些是可读的:
Array(1000).fill("");
" ".repeat(999).split(" ");
【讨论】:
(产生 1001 个空字符串。)【参考方案4】:你可以试试这样:
let n = 1000;
var emptyStrings = [...Array(n)].map(() => '')
【讨论】:
【参考方案5】:使用Array.from
;
const n = 5;
const arr = Array.from(length: n).map(el => "")
console.log(arr)
【讨论】:
这是我正在寻找的最短答案。谢谢@Sahin。【参考方案6】:你可以用它做一个函数:
function stringArray(length)
var arr = [];
for(var i = 0; i < length; ++i) arr.push('');
return arr;
【讨论】:
【参考方案7】:你可以这样做:
var someLength = 10;
var empty = Array.apply(0, Array(someLength)).map(function()return '';);
// result: ["", "", "", "", "", "", "", "", "", ""]
【讨论】:
如果有人想知道它是如何工作的 ***.com/questions/18947892/… :)【参考方案8】:只是为了好玩
var empty = Array.apply(null, new Array(someLength)).map(String.prototype.valueOf,"");
【讨论】:
+1 用于valueOf
的巧妙技巧。旁注 - new 在这里是多余的。
短一点:String(Array([length])).split(',').map(String.prototype.valueOf,'')
【参考方案9】:
在 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/
【讨论】:
打高尔夫球可以节省三个字符 ;-)[1..5].map(-> '')
【参考方案10】:
虽然没有广泛使用,但一旦浏览器开始支持 EcmaScript 6 数组解析,您将能够执行以下操作:
var n = 1000;
var empty_strs = ['' for (x of new Array(n))]
【讨论】:
这些不再是 ECMAScript 6 的一部分。(考虑用于 ES7)以上是关于创建空字符串数组?的主要内容,如果未能解决你的问题,请参考以下文章