⛽️第5期第1题:实现mask函数将"123456"转为"##3456",只保留最后四个字符
Opened this issue · 0 comments
LinDaiDai commented
实现mask函数将"123456"转为"##3456",只保留最后四个字符
(题目来源:https://github.com/30-seconds/30-seconds-of-interviews)
首先介绍一下题目的意思吧😄,案例🌰如下:
const mask = (str, maskChar = '#') => {
// 代码
}
console.log(mask('123456')); // '##3456'
console.log(mask('lindaidai')); // '#####idai'
这道题的难度应该没有那么大,处理方式也有很多。呆呆这边主要是讲解一下如何使用padStart
来实现的。
简单介绍一下padStart
方法吧,它是ES8
新增的实例函数,与它作用差不多的还有一个叫padEnd
的函数:
String.prototype.padStart
String.prototype.padEnd
作用:允许将空字符串或其他字符串添加到原始字符串的开头或结尾。
语法:
padStart(targetLength, [padString])
targetLength
: 必填,当前字符串需要填充到的目标长度。如果这个数值小于当前字符串的长度,则返回当前字符串本身。padString
: 可选,填充字符串。如果字符串太长,使填充后的字符串长度超过了目标长度,则只保留最左侧的部分,其他部分会被截断,此参数的缺省值为" "
。
例如:
'x'.padStart(4, 'ab') // 'abax'
'x'.padEnd(5, 'ab') // 'xabab'
哈哈,另外想要了解如何实现一个padStart
的小伙伴可以看呆呆之前一篇文章哟:DD每周前端七题详解-第二期
言归正传,让我们回到这道题目哈,首先让我们来处理一下输入参数边界的情况,例如输入的str
不存在或者长度小于4
的时候:
const mask = (str, maskChar = '#') => {
if (!str || str.length <= 4) return str;
}
其次,我们可以只保留住str
的末尾四个字符,然后使用padStart
将这四个字符填充至str.length
即可,如下:
const mask = (str, maskChar = '#') => {
if (!str || str.length <= 4) return str;
return str.slice(-4).padStart(str.length, maskChar);
}
slice
不会影响原本的字符串- 使用
padStart
填充即可