用于生成数组的字符串文字上的JavaScript String.split

时间:2015-01-27 02:18:57

标签: javascript arrays string split

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

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

他们没有拆分用户输入或某个包含字符串值的变量,他们正在拆分硬编码的字符串文字来生成数组。在所有的情况下,我看到如上所述的行似乎只使用数组文字而不依赖split从字符串创建数组是完全合理的。是否有任何理由认为创建数组的上述模式是有意义的,或者比仅仅使用数组文字更有效?

4 个答案:

答案 0 :(得分:1)

在运行时拆分字符串而不是使用数组文字时,您需要为少量带宽交换少量执行时间。

在大多数情况下,我认为这不值得。如果您在发布代码之前缩小和压缩代码as you should be,则使用字符串中的单个逗号与数组中两个字符串的引号逗号引用对带宽节省几乎没有影响。事实上,在缩小和gzipping之后,由于添加了较小的可压缩.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的内容复制粘贴到一个长字符串中,则此代码会更好地压缩。我不这样做的原因是,这将是一种微观优化,会损害未来的可维护性。如果以后需要将带有重音符号,波浪号或变音符号的字符添加到字母列表中,可以将它们添加到一个地方;无需记住将它们复制粘贴到alphanumeric中。

分割字符串对于code golf可能很有用,但在生产环境中,缩小和gzipping是因素并且易于阅读,可维护的代码很重要,只需使用数组文字几乎总是更好的选择。 / p>

答案 1 :(得分:0)

例如,在ruby中,数组["test", "one", "two", "three"]

也可以写成%w(test one two three),这样就可以节省一些要键入的字符。

但javascript并不支持这种表示法,因此有人使用split方法来实现它。

答案 2 :(得分:0)

如果手动构建大量数组。它可能会减少页面的加载时间,因为传输的字符较少。但是你需要大量的数组或大型数组来产生相当大的差异。创建数组的性能可能会慢一些,但输入速度会更快。对于大型数组,我使用电子表格来应用每个值的格式化,使用类似这样的公式="'"& A1&"',"。我坚持使用数组文字。

答案 3 :(得分:0)

使用" split"更有意义。你无法控制输出的方法,即。用户输入或方法的字符串输出。如果您尝试在输出中获取由某个内容分隔的特定值,则更容易使用split方法。当然,如果您控制价值,它并不总是有意义的。