我在初學筆記9時曾有個加密程式的練習,當時寫了encodeName & encodeEmail 兩個函式來保護中獎者的資訊,今天則是要利用padEnd()簡化加密的寫法!
padEnd(length,item) 可接受兩個參數,length表示你希望這個字串最終的長度,item則表示你要填充進去的字元,item的預設值為空白。 用這個方法就可以輕鬆的解決加密的問題,將 encodeName 改寫為以下
//宣告物件作為示範
const users =[
{name:'Danny',email:'windate3411@gmail.com'},
{name:'John',email:'John@hotmail.com'}
]
//只保留前兩個字元,後續用*取代
const encodeName = name => {
return name.slice(0,2).padEnd(name.length,'*')
}
//印出Da***
console.log(encodeName(users[0].name))
同樣的方法自然也能用在 encodeEmail ,只是會稍微麻煩一些。原因很簡單,因為我們在加密信箱時不需要處理domin的部份,只需要處理前面的使用者名稱,直接使用padEnd的話會達不到我們要的效果。所以必須乖乖的拆為兩部分後再做組合~!
const encodeEmail = email => {
let empty = ''
let former = email.slice(0,email.indexOf('@'))
let latter = email.slice(email.indexOf('@'))
return empty+=former.slice(0,Math.floor(former.length/2)).padEnd(former.length,'.')+latter
}
//輸出winda……@gmail.com
console.log(encodeEmail(users[0].email))