【问题标题】:Create string of Letter and length of a string创建一个字母的字符串和一个字符串的长度
【发布时间】:2015-06-03 13:35:59
【问题描述】:

我想从一个字母和一个字符串的长度创建一个字符串。这是我目前拥有的,但有更好的方法吗?

function generate(letter, len) {
   var str = '';
   for (var i=0; i<len; i++) {
     str+=letter;
   }
  
   return str;
  
}

【问题讨论】:

标签: javascript arrays string


【解决方案1】:

不知道这在性能方面是否更好,因为某些引擎会优化代码而其他引擎不会。然而,对于 javascript 程序员来说,它是可读的。

您可以创建一个大小为len + 1 的数组,然后按字母加入。

为此,我们将使用数组构造函数,在这里我们可以定义数组的大小和Array.join 将数组与给定的letter 连接起来。

function generate(letter, len) {
    return new Array(len + 1).join(letter); 
}

【讨论】:

  • 为什么这样更好?它更快吗?我对此表示怀疑。是不是更容易阅读?这可以无限讨论。
  • 我认为加入可能无限长的字符串并不是更好的方法。通过创建数组你在 ram 中创建一个对象,然后你加入它也消耗资源。使用“for循环”生成仍然是更好的方法。
  • @AmitJoki 您不知道引擎(编译器/解释器)将如何处理字符串连接。也许它会使用 Java 或 C# 中的 StringBuilder 之类的东西。也许它会为每个字符串保留内存并在使用完毕后再次释放它。
  • 也许它会检查代码并创建一个长度为len 的字符串,然后简单地将串联重写为str[i] = letter
  • @dev-null jsperf.com/for-vs-array-join/3 当 len 很小时,For 循环可能会更快..但是当它变得有点大时会发生什么?谈微优化
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-29
  • 1970-01-01
  • 2012-10-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多