聽說這是一道頭條面試題

realmofwind發表於2020-03-17

題目很簡單:實現一個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複製程式碼

更多面試知識,歡迎關注我的個人微信公眾號:程式設計男孩

                                           聽說這是一道頭條面試題


相關文章