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 即可