什么是腳本傳播運(yùn)算符?它允許可迭代對(duì)象(如數(shù)組)就地進(jìn)行擴(kuò)展。
您知道“腳本傳播”運(yùn)算符嗎?它由三個(gè)點(diǎn)表示 - 是的,點(diǎn)差運(yùn)算符是著名的“...”。它基本上允許表達(dá)式在需要多個(gè)元素的位置擴(kuò)展數(shù)組的內(nèi)容。
讓我以更實(shí)際的方式向你們展示:想象一下下面的代碼:
請(qǐng)注意,在本例中,我沒(méi)有使用“散布”。通過(guò)將數(shù)組放在另一個(gè)數(shù)組中,我們?cè)诖蛴r(shí)會(huì)得到一個(gè)相當(dāng)不尋常的結(jié)果?,F(xiàn)在嘗試把“...”在數(shù)組中間之前,您可以看到會(huì)發(fā)生什么,如下所示:arr
此運(yùn)算符用于在運(yùn)行時(shí)解釋時(shí)展開(kāi)數(shù)組或?qū)ο蟮脑?。在后一種情況下,中間項(xiàng)已分布在 中。arr
這是 Spread 運(yùn)算符的默認(rèn)用法,但它比這更強(qiáng)大,我想在今天的文章中討論的正是這些秘密。
1. 復(fù)制帶有跨頁(yè)的數(shù)組
你知道如何在腳本中復(fù)制數(shù)組嗎?初學(xué)者程序員可能會(huì)認(rèn)為這有效:
但不幸的是,生活并不那么簡(jiǎn)單。在這種情況下,不是 的副本,而是它本身,因?yàn)閮烧叩膬?nèi)存引用是相同的。懷疑嗎?然后測(cè)試它:arr2 arr arr
您是否注意到,當(dāng)您在 arr2 中添加項(xiàng)目時(shí),它也出現(xiàn)在 arr 中?那是因?yàn)樗鼈兪且粯拥?!?zhí)行此操作的正確方法之一是使用特定函數(shù)。
如果你已經(jīng)對(duì)JavaScript編程了一段時(shí)間,你可能知道切片函數(shù),對(duì)吧?它是允許您復(fù)制數(shù)組的那個(gè)。但是您知道嗎,我們也可以使用 Spread 復(fù)制數(shù)組?
當(dāng)我們展開(kāi)數(shù)組時(shí),其項(xiàng)的值將復(fù)制到另一個(gè)數(shù)組中。這兩個(gè)數(shù)組都是獨(dú)立的,因此這顯然是復(fù)制工作數(shù)組的一種方法。
2. 使用跨頁(yè)連接數(shù)組
如果我想加入兩個(gè)數(shù)組,該怎么辦?我們已經(jīng)了解到,使用賦值運(yùn)算符 (=) 不起作用。求和運(yùn)算符顯然也不起作用。您知道在 JavaScript 中執(zhí)行此操作的特定函數(shù)嗎?連接:
但是您知道嗎,使用Sample運(yùn)算符有一種更簡(jiǎn)單的方法來(lái)執(zhí)行此操作?
3. 帶有點(diǎn)差的數(shù)學(xué)運(yùn)算
您是否知道您可以將 JavaScript 數(shù)學(xué)函數(shù)與傳播結(jié)合使用?
讓我們從 Math.max() 開(kāi)始,這是一個(gè)函數(shù),它返回我們作為參數(shù)傳遞給它的一組數(shù)字中最大的一個(gè)。
沒(méi)有辦法將數(shù)組作為此函數(shù)中的參數(shù)傳遞,但是使用幫助器函數(shù),是的,盡管它看起來(lái)很奇怪:
但是點(diǎn)差呢?
4. 帶跨頁(yè)的字符串到數(shù)組
如果需要將字符串轉(zhuǎn)換為字符數(shù)組,該怎么辦?就像在C時(shí)代一樣,還記得嗎?這個(gè)非常簡(jiǎn)單,如下圖所示: