【问题标题】: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 或咖啡脚本在一行中执行此操作。

【问题讨论】:

    标签: javascript node.js coffeescript


    【解决方案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("");
    

    【讨论】:

    • 欢迎来到 StackOverflow:如果您发布代码、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: ["", "", "", "", "", "", "", "", "", ""]
        

        【讨论】:

        【解决方案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)
        猜你喜欢
        • 2020-02-18
        • 1970-01-01
        • 1970-01-01
        • 2017-07-30
        • 2016-03-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多