连接数组
问题
你想把两个数组合并到一起。
方法
在JavaScript中有两种标准的方法来合并数组。
第一种是使用JavaScript Array的concat()
方法:
array1 = [1, 2, 3]
array2 = [4, 5, 6]
array3 = array1.concat array2
# => [1, 2, 3, 4, 5, 6]
需要注意的是array1
在操作中没有被修改。串接的数组返回一个新的对象。
如果你希望合并两个数组而不创建新对象,你可以使用以下技巧:
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
对象,而无需创建一个新数组对象。
我们可以使用CofeeScript为数组创建一个新的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]
作为Array原型的替代,我们可以直接给push()
传递一个参数列(array2…)。
array1 = [1, 2, 3]
array2 = [4, 5, 6]
array1.push array2...
array1
# => [1, 2, 3, 4, 5, 6]97
详解
CoffeeScript虽然缺少链接数组的特殊语法,但concat()
和push()
是JavaScript标准的方法。