JavaScript String.split 在字符串文字上生成数组

标签 javascript arrays string split

我见过一些 javascript 程序员使用这种模式来生成数组:

"test,one,two,three".split(','); // => ["test", "one", "two", "three"]

他们不是拆分用户输入或某些保存字符串值的变量,而是拆分硬编码的字符串文字以生成数组。在所有情况下,我都看到了像上面这样的一行,似乎只使用数组文字而不依赖 split 从字符串创建数组是完全合理的。是否有任何理由表明上述创建数组的模式有意义,或者比简单地使用数组文字更有效?

最佳答案

当在运行时拆分字符串而不是使用数组文字时,您是以少量的执行时间换取少量的带宽。

在大多数情况下,我认为这是不值得的。如果您在发布代码之前对其进行压缩和 gzip 压缩,as you should be 在字符串中使用单个逗号而不是在数组中的两个字符串中使用引号-逗号-引号对节省带宽几乎没有影响。事实上,在缩小和 gzip 压缩之后,由于添加了可压缩性较差的 .split(','),使用拆分字符串的版本可能会更长。

拆分字符串而不是创建字符串数组文字确实意味着更少的输入,但我们 spend more time reading code than writing it 。将来使用数组文字会更易于维护。如果您想向数组中的项目添加逗号,只需将其添加为数组文字中的另一个字符串即可;使用 split 您将不得不使用不同的分隔符重新编写整个字符串。

我使用 split 和字符串文字来创建数组的唯一情况是,如果我需要一个只包含单个字符的数组,即字母表、数字或字母数字字符等。

var letters = 'abcdefghijklmnopqrstuvwxyz'.split(''),
  numbers = '0123456789'.split(''),
  alphanumeric = letters.concat(numbers);

您会注意到我使用 concat 来创建 alphanumeric。如果我改为将 lettersnumbers 的内容复制粘贴到一个长字符串中,那么这段代码会压缩得更好。我没有这样做的原因是那将是一个微观优化,会损害 future 的可维护性。如果将来需要将带有重音符、波浪号或变音符号的字符添加到字母列表中,可以将它们添加到一个地方;也无需记住将它们复制粘贴到 alphanumeric 中。

拆分字符串可能对 code golf 有用,但在缩小和 gzip 压缩是因素的生产环境中,编写易于阅读、可维护的代码很重要,仅使用数组文字几乎总是更好的选择。

关于JavaScript String.split 在字符串文字上生成数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28162171/

相关文章:

c - 在文件操作中使用 strcat 时如何修复段错误(核心转储)

python - 将字符串展开为代数表达式

javascript 相对于窗口大小调整内容大小

java.lang.ArrayIndexOutOfBoundsException 对象数组

JavaScript 用空格分割字符串

java - NSArray 大小和可变性

javascript - Angular Firebase 从匿名用户检索收集的数据

javascript - Meteor 从模态访问数据

javascript - JavaScript中 ' >>>'运算符的含义是什么

string - Python Pandas : How to replace string contain "?"