數(shù)組是腳本中最強(qiáng)大的數(shù)據(jù)結(jié)構(gòu)。我發(fā)現(xiàn)自己通過(guò)將字符串轉(zhuǎn)換為數(shù)組來(lái)解決許多算法。因此,我想到整合和比較各種方法來(lái)做同樣的事情。從字符串到數(shù)組的轉(zhuǎn)換總是使用該方法完成的,但是在ES6之后,我們可以執(zhí)行許多工具。讓我們逐一介紹每種方法,并討論每種方法的優(yōu)缺點(diǎn)。split()
1. 使用 .split(“):
split()是一個(gè)字符串方法,它將字符串拆分為具有模式的有序列表數(shù)組。這是一種 ES6 方法,是完成工作的最干凈方法。
這種方式的另一個(gè)優(yōu)點(diǎn)是我們可以用字符或空格分隔字符串。以下是我們?nèi)绾巫龅竭@一點(diǎn)的示例。
它也適用于正則表達(dá)式。您可以在此處找到的完整文檔。split()
這種方式完美地將字符串元素分離到一個(gè)數(shù)組中,但它有其局限性。
注意:此方法不適用于不常見(jiàn)的 Unicode 字符。此方法返回字符的 Unicode 而不是實(shí)際字符,這可能會(huì)使我們的工作更加復(fù)雜(請(qǐng)參閱此處),但 MDN 文檔已更新,以便如果我們只包含標(biāo)志,我們可以使其與 Unicode 一起使用 。
2. 使用跨頁(yè)語(yǔ)法))
這是ES2015的功能,使過(guò)渡變得非常容易。
我們?cè)谶@里消除了我們?cè)?中的限制也有所幫助。請(qǐng)考慮以下示例。我們可以使用此方法輕松拆分任何字符。split()
3. 使用數(shù)組:
該方法從可迭代或類(lèi)似數(shù)組的對(duì)象創(chuàng)建新的淺層復(fù)制實(shí)例。Array. from()Array
此方法在處理不常見(jiàn)的字符時(shí)不會(huì)引起任何問(wèn)題。
4. 使用對(duì)象
該方法將所有屬性從一個(gè)或多個(gè)源對(duì)象復(fù)制到目標(biāo)對(duì)象。但是,關(guān)于這種方法,有兩件事要記住。一種是復(fù)制稱為深層復(fù)制的屬性值(請(qǐng)參閱此處以了解深層復(fù)制和淺層復(fù)制之間的區(qū)別)。在使用此方法之前,必須牢記這一點(diǎn),然后再使用它。Object. assign()Object. assign()
另一個(gè)是我們遇到了與該方法相同的問(wèn)題:它無(wú)法分離不常見(jiàn)的字符(我們看到Unicode而不是實(shí)際字符)。split()
5. 使用老式的方法(用于循環(huán)和數(shù)組。
盡管我們有很多選擇可以玩,但我不得不提到這個(gè)老式的方法,我們使用 和 數(shù)組方法 推送字符串的元素 。for looppush()
這不是最干凈的方式,但絕對(duì)值得一提的是那些想要遠(yuǎn)離JavaScript不斷變化的復(fù)雜性的人(盡管我更喜歡其他方式)。
此外,它適用于不常見(jiàn)的(Unicode)字符。請(qǐng)看下面的例子。
6. 使用數(shù)組
請(qǐng)參閱此博客以了解有關(guān)方法的更多信息。.slice.call()
此方法也存在與該方法相同的問(wèn)題,因此在使用它時(shí)要注意。split()
結(jié)論:
總而言之,以下是我們可以完成這項(xiàng)工作的方法。