屏蔽JavaScript值

在与字符串操作相关的展示逻辑中,屏蔽敏感信息是最常见的一种情况。这通常与保存的信用卡号码有关,但也有其他用例。最常见的屏蔽格式是用掩码字符(如星号*)替换大部分字符,只保留最后几个字符。

实现一个帮助函数来屏蔽任何值总体上是相当简单的。首先,我们可以使用模板字符串将值转换为字符串。然后,使用String.prototype.slice()方法,我们可以获取保持不被屏蔽的字符部分。最后,我们可以使用String.prototype.padStart()方法来用掩码字符填充字符串的开头,直到达到原始长度。

使用负数的num参数将把未屏蔽的字符放在字符串的开头。省略第二个参数num将保持默认值为4个未屏蔽的字符。省略第三个参数mask将使用默认字符'*'作为掩码。

const mask = (cc, num = 4, mask = '*') =>
  `${cc}`.slice(-num).padStart(`${cc}`.length, mask);

mask(1234567890); // '******7890'
mask(1234567890, 3); // '*******890'
mask(1234567890, -4, '$'); // '$$$$567890'