CoffeeScript攻略4.2:類似Python的zip函式

CoffeeScript Cookbook發表於2011-12-02

問題

你想把多個陣列鏈在一起,生成一個陣列的陣列;換句話說,你需要實現與Python中的zip函式類似的功能。Python的zip函式返回的是元組的陣列,其中每個元組中包含著作為引數的陣列中的第i個元素。

方案

使用下面的CoffeeScript程式碼:

# Usage: zip(arr1, arr2, arr3, ...)
zip = () ->
  lengthArray = (arr.length for arr in arguments)
  length = Math.max.apply(Math, lengthArray)
  argumentLength = arguments.length
  results = []
  for i in [0...length]
    semiResult = []
    for arr in arguments
      semiResult.push arr[i]
    results.push semiResult
  return results

zip([0, 1, 2, 3], [0, -1, -2, -3])
# => [[0, 0], [1, -1], [2, -2], [3, -3]]

enter image description here

相關文章