簡體   English   中英

用於生成數組的字符串文字上的JavaScript String.split

[英]JavaScript String.split on a string literal to produce an array

我見過一些javascript程序員使用這個模式來生成一個數組:

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

它們不是拆分用戶輸入或者是一個包含字符串值的變量,而是分割硬編碼的字符串文字來生成數組。 在所有的情況下,我已經看到如上所述的行,似乎只使用數組文字而不依賴於split來從字符串創建數組是完全合理的。 上述創建數組的模式是否有意義,或者僅僅使用數組文字更有效率?

在運行時拆分字符串而不是使用數組文字時,您需要為少量帶寬交換少量執行時間。

在大多數情況下,我認為這是不值得的。 如果你在發布之前縮小和壓縮代碼, 就像你應該的那樣 ,在字符串中使用單個逗號而不是數組中兩個字符串的引號逗號引用對帶寬節省幾乎沒有影響。 事實上,在縮小和gzipping之后,由於添加了較少可壓縮的.split(',')使用拆分字符串的版本可能會更長。

拆分字符串而不是創建字符串的數組文字確實意味着更少的輸入,但我們花更多的時間閱讀代碼而不是編寫代碼 使用數組文字將來會更容易維護。 如果要為數組中的項添加逗號,只需將其添加為數組文字中的另一個字符串; 使用split你必須使用不同的分隔符重寫整個字符串。

我使用split和字符串文字來創建數組的唯一情況是,如果我需要一個只包含單個字符的數組,即字母,數字或字母數字字符等。

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

您會注意到我使用concat來創建alphanumeric 如果我將lettersnumbers的內容復制粘貼到一個長字符串中,則此代碼將更好地壓縮。 我不這樣做的原因是,這將是一種微觀優化,會損害未來的可維護性。 如果以后需要將帶有重音符號,波浪號或變音符號的字符添加到字母列表中,可以將它們添加到一個地方; 無需記住將它們復制粘貼到alphanumeric

拆分字符串對於代碼高爾夫可能很有用,但在生產環境中,縮小和gzipping是因素並且編寫易於閱讀,可維護的代碼很重要,僅使用數組文字幾乎總是更好的選擇。

例如,在ruby中,數組["test", "one", "two", "three"]

也可以寫成%w(test one two three) ,這可以節省一些要輸入的字符。

但是javascript不支持這種表示法,所以有人使用split方法來實現它。

如果大量數組是手動構建的。 它可能會減少頁面的加載時間,因為傳輸的字符較少。 但是你需要大量的數組或大型數組來產生相當大的差異。 創建數組的性能可能會慢一些,但輸入速度會更快。 對於大型數組,我使用電子表格來應用每個值的格式化,使用類似this =“'”&A1&“',”的公式。 我堅持使用數組文字。

當你無法控制輸出時,使用“拆分”方法更有意義,即。 用戶輸入或方法的字符串輸出。 如果您嘗試在輸出中獲取由特定值分隔的特定值,則更容易使用split方法。 當然,如果你控制價值,它並不總是有意義的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM