當我們使用 Function 處理 String 時,常常最後一個 Char 不是我們所要的,此時可用 init()
剔除之。
Version
macOS Catalina 10.15.2
VS Code 1.41.1
Quokka 1.0.274
Ramda 0.26.1
Imperative
let data = 'let x = 1;'
let init = str => {
let result = ''
for(let i = 0; i < str.length; i++)
if (i !== str.length -1)
result += str[i]
return result
}
init(data) // ?
let x = 1;
最後包含 ;
,我們想將 ;
拿掉成為 let x = 1
。
Imperative 會使用 for
loop,判斷當 index 不是最後一個 char 時,將 char +
進 result
。
slice()
let data = 'let x = 1;'
let init = str => str.slice(0, -1)
init(data) // ?
也可使用 String.prototype
的 slice()
實現 init()
。
import { slice } from 'ramda'
let data = 'let x = 1;'
let init = slice(0)(-1)
init(data) // ?
也可使用 Ramda 的 slice()
實現 init()
。
Ramda 的
slice()
可同時接受 array 或 string
Ramda
import { init } from 'ramda'
let data = 'let x = 1;'
init(data) // ?
Ramda 已經提供 init()
可直接使用。
init()
String -> String
取得不包含最後一個 char 的 string
String
:data 為 string
String
:回傳為 string
Conclusion
init()
與dropLast(1)
等效,可交替使用