題目很簡單:實現一個render方法,完成下述功能:
const year = '2020'
const month = '03'
const 'day' = '17'
const str = render('${year}-${month}-${day}')({year, month, day})
console.log(str)
// 輸出:2020-03-17複製程式碼
大概看一下題目,發現兩個考點,一個是函式柯里化,一個就是字串替換操作。說到字串替換,那自然就會想到正規表示式。
str.replace(reg, function)複製程式碼
利用字串的replace
方法,加上正規表示式的捕獲組,我們可以捕獲到到 `${year}`這樣的字串,並把它替換成我們想要的內容。話不多說來看下程式碼:
const render = (format) => {
return (map) => {
return format.replace(/\$\{(year|month|day)\}/g, function (str,key) {
return map[key]
})
}
}
console.log(render('${year}-${month}-${day}')({year: '2020', month: '03', day: '17'}))
// 2020-03-17複製程式碼
更多面試知識,歡迎關注我的個人微信公眾號:程式設計男孩