CoffeeScript攻略4.4:使用陣列交換變數

CoffeeScript Cookbook發表於2011-12-04

問題

你想通過陣列來交換變數。

方案

使用CoffeeScript的解構賦值語法:

a = 1
b = 3

[a, b] = [b, a]

a
# => 3

b
# => 1

討論

解構賦值可以不依賴臨時變數實現變數值的交換。

這種語法特別適合在遍歷陣列的時候只想迭代最短陣列的情況:

ray1 = [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ]
ray2 = [ 5, 9, 14, 20 ]

intersection = (a, b) ->
  [a, b] = [b, a] if a.length > b.length
  value for value in a when value in b

intersection ray1, ray2
# => [ 5, 9 ]

intersection ray2, ray1
# => [ 5, 9 ]

enter image description here

相關文章