创建空字符串数组?

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】:

更新:在较新的浏览器上 - 使用 .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;

这样一来,所做的事情就一目了然,并且您可以重复使用它。

【讨论】:

+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(-&gt; '')【参考方案10】:

虽然没有广泛使用,但一旦浏览器开始支持 EcmaScript 6 数组解析,您将能够执行以下操作:

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

【讨论】:

这些不再是 ECMAScript 6 的一部分。(考虑用于 ES7)

以上是关于创建空字符串数组?的主要内容,如果未能解决你的问题,请参考以下文章

C语言中,如何将一串字符数组形成字符串

使用LOOPS从字符串创建各种数组

C# 声明空字符串数组

为啥一个空数组等于一个空字符串,而不是 javascript 中的另一个空数组? [复制]

如何使用ajv验证空字符串数组?

c语言如何将一串字符数据写入字符串数组