斜槓工程師的問題筆記

[Ruby] 輕鬆處理 hash 中的值:transform_values 的使用

幾個最愛用的方法之一

換工作開始接觸到 Ruby 後,深深感受到他「對開發者友善」的一面,在工作中,transform_values這個方法是幾個最常使用到也很愛用的方法之一。具體用法就如同字面上所述,是用來更改 Hash(類似 JS 的物件)中的值並返回一個新 Hash,因此他是 Hash 上的方法,且不會影響原本的資料。

h = { a: 1, b: 2, c: 3 }
h.transform_values {|v| v * 2 }  #=> { a: 2, b: 4, c: 6 }
h.transform_values(&:to_s)       #=> { a: "1", b: "2", c: "3" }

同樣的效果在原生 JS 中,即使是最簡潔的做法都看起來有點囉唆且沒有那麼易懂,寫習慣後有時候切換回 JS 都會有點當機。

const h = { a: 1, b: 2, c: 3 }

const result1 = Object.fromEntries(
  Object.entries(h).map(([key, value]) => [key, value * 2])
) // { a: 2, b: 4, c: 6 }

const result2 = Object.fromEntries(
  Object.entries(h).map(([key, value]) => [key, value.toString()])
) // { a: "1", b: "2", c: "3" }

目前最常使用的情況有幾種

  1. 是在將資料從資料庫取出後,進行處理的過程。
  2. 串接外部 api 後的資料整理。

但不限於此,只要需要單獨針對值進行調整的情境都可以使用它,非常的實用。

參考資料

All rights reserved.