给我写个方法传值 [{name: "20_df", id: "0f2690302942c653554665213cafbde6"},…]给name字段脱敏,3个字以内隐藏第2个字,4到6个字隐藏前2个字,大于6个字隐藏第3到6个字,隐藏字用*代替,脱敏后返回数组
时间: 2024-12-17 13:47:33 浏览: 2
spark-db-case-class:将Spark DB名称映射到case类中的字段
可以创建一个函数,接收一个人员信息数组作为参数,遍历每个对象,并对`name`字段应用指定的脱敏规则。以下是这个方法的示例实现:
```javascript
function* privacyFilter(arr) {
for (const item of arr) {
const name = item.name;
let sanitizedName;
if (name.length <= 3) { // 如果长度小于等于3个字
sanitizedName = '*' + name.slice(1); // 隐藏第二个字符
} else if (name.length <= 6) { // 如果长度在4到6个字之间
sanitizedName = name.slice(0, 2) + '*' + name.slice(3); // 隐藏前两个和第三个字符
} else { // 长度超过6个字
sanitizedName = name.slice(0, 3) + '****'; // 隐藏第三到第六个字符
}
yield { ...item, name: sanitizedName }; // 返回处理后的对象
}
}
// 使用方法
const originalArray = [{ name: "20_df", id: "0f2690302942c653554665213cafbde6" }, ...];
const anonymizedArray = Array.from(privacyFilter(originalArray));
```
这个函数会生成一个新的数组,其中`name`字段已按照脱敏规则进行了替换。你可以直接将`anonymizedArray`用于展示或者存储。
阅读全文