CoffeeScript 將數(shù)組連接

2022-06-29 16:52 更新

將數(shù)組連接

問題

你希望將兩個數(shù)組連接到一起。

解決方案

在JavaScript中,有兩個標(biāo)準(zhǔn)方法可以用來連接數(shù)組。

第一種是使用JavaScript的數(shù)組方法concat():

array1 = [1, 2, 3]
array2 = [4, 5, 6]
array3 = array1.concat array2
# => [1, 2, 3, 4, 5, 6]

需要指出的是array1沒有被運(yùn)算修改。連接后形成的新數(shù)組的返回值是一個新的對象。

如果你希望在連接兩個數(shù)組后不產(chǎn)生新的對象,那么你可以使用下面的技術(shù):

array1 = [1, 2, 3]
array2 = [4, 5, 6]
Array::push.apply array1, array2
array1
# => [1, 2, 3, 4, 5, 6]

在上面的例子中,Array.prototype.push.apply(a, b)方法修改了array1而沒有產(chǎn)生一個新的數(shù)組對象。

在CoffeeScript中,我們可以簡化上面的方式,通過給數(shù)組創(chuàng)建一個新方法merge():

Array::merge = (other) -> Array::push.apply @, other

array1 = [1, 2, 3]
array2 = [4, 5, 6]
array1.merge array2
array1
# => [1, 2, 3, 4, 5, 6]

另一種方法,我可以直接將一個CoffeeScript splat(array2)放入push()中,避免了使用數(shù)組原型。

array1 = [1, 2, 3]
array2 = [4, 5, 6]
array1.push array2...
array1
# => [1, 2, 3, 4, 5, 6]

一個更加符合語言習(xí)慣的方法是在一個數(shù)組語言中直接使用splat運(yùn)算符(...)。這可以用來連接任意數(shù)量的數(shù)組。

array1 = [1, 2, 3]
array2 = [4, 5, 6]
array3 = [array1..., array2...]
array3
# => [1, 2, 3, 4, 5, 6]

討論

CoffeeScript缺少了一種用來連接數(shù)組的特殊語法,但是concat()和push()是標(biāo)準(zhǔn)的JavaScript方法。

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號