點燈坊

失くすものさえない今が強くなるチャンスよ

使用 join() 將 Array 轉成 String

Sam Xiao's Avatar 2020-01-27

Array 與 String 都是常用型別,Array.prototype 提供了 join() 將 Array 轉成 String。

Version

macOS Catalina 10.15.2
VS Code 1.41.1
Quokka 1.0.274
ECMAScript 2015

Imperative

let data = [1, 2, 3]

let fn = separator => arr => {
  let result = ''

  for(let i = 0; i < arr.length; i++) {
    if (i === arr.length - 1)
      result += arr[i]
    else
      result += arr[i] + separator
  }

  return result
}

fn(',')(data) // ?

join() 除了能將 string 轉成 array 外,還可傳入 separator 將 element 隔離。

Imparative 會使用 for loop,若不是最後一個 element 則加入 separator。

join000

reduce()

let data = [1, 2, 3]

let fn = separator => arr => arr.reduce((a, x, i) => 
  i === arr.length - 1 ? a + x : a + x + separator
, '')

fn(',')(data) // ?

也可將 imperative 使用 reduce() 改寫之。

join001

join()

let data = [1, 2, 3]

let fn = separator => arr => arr.join(separator)

fn(',')(data) // ?

其實 ECMAScript 的 Array.prototype 已經內建 join(),可直接使用。

arr.join([separator])
將 array 轉成 string,可另外提供 separator

separator:傳入 element 間的 separator,不包含最後一筆,可省略

回傳值為 string。

join002

Conclusion

  • 若只想將 array 轉成 string,可省略不傳 separator 即可

Reference

MDN, Array.prototype.join()