實務上有時候會想將 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。
Object.assign()
let str = 'ECMAScript'
Object.assign([], str) // ?
也可使用 Object.assign()
將 string 轉成 char array。
不過值得注意的是 Object.assign()
原本功能為 shallow copy array,因此 Object.assign()
是將 string 的所有 property 複製到 []
,因此連 string 的 method 也複製過去了。
Array Spread
let str = 'ECMAScript'
let result = [...str] // ?
也可使用 ES6 的 spread operator 將 string 展開後再重新合併為 array。
Array.from()
let str = 'ECMAScript'
Array.from(str) // ?
也可使用 ES6 的 Array.from()
將 iterable 轉成 array,因為 string 也是 iterable,因此也適用。
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