點燈坊

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

如何將 String 轉成 Char Array ?

Sam Xiao's Avatar 2020-03-18

實務上有時候會想將 String 轉成 Char Array 做進一步處理,ECMAScript 提供了 4 種方式轉換。

Version

macOS Catalina 10.15.3
VS Code 1.43.0
Quokka 1.0.282
ECMAScript 2015

split()

let str = 'ECMAScript'

str.split('') // ? 

String 可透過 split() 轉成 array,只要傳入 empty string 表示沒 spliter,剛好就是 string 轉成 char array。

char000

Object.assign()

let str = 'ECMAScript'

Object.assign([], str) // ?

也可使用 Object.assign() 將 string 轉成 char array。

不過值得注意的是 Object.assign() 原本功能為 shallow copy array,因此 Object.assign() 是將 string 的所有 property 複製到 [],因此連 string 的 method 也複製過去了。

char001

Array Spread

let str = 'ECMAScript'

let result = [...str] // ?

也可使用 ES6 的 spread operator 將 string 展開後再重新合併為 array。

char002

Array.from()

let str = 'ECMAScript'

Array.from(str) // ?

也可使用 ES6 的 Array.from() 將 iterable 轉成 array,因為 string 也是 iterable,因此也適用。

char003

Conclusion

  • split()Object.assign() 算傳統 ES5 常用方式,但可讀性不佳,實務上建議改用 ES6 的 array spread 或 Array.from()
  • Ramda 有些 function 可直接處理 string,因此不見的要將 string 轉成 char array

Reference

Samantha Ming, 4 Ways to Convert String to Character Array in JavaScript