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。

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() 改寫之。

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。

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