当前位置:首页 > VUE

vue实现姓名脱敏

2026-03-09 21:17:36VUE

Vue 实现姓名脱敏的方法

在Vue中实现姓名脱敏可以通过多种方式完成,以下是几种常见的方法:

使用计算属性脱敏

<template>
  <div>{{ maskedName }}</div>
</template>

<script>
export default {
  data() {
    return {
      name: '张三丰'
    }
  },
  computed: {
    maskedName() {
      if (this.name.length <= 1) return this.name
      return this.name.charAt(0) + '*'.repeat(this.name.length - 1)
    }
  }
}
</script>

使用过滤器脱敏

vue实现姓名脱敏

<template>
  <div>{{ name | maskName }}</div>
</template>

<script>
export default {
  data() {
    return {
      name: '李四'
    }
  },
  filters: {
    maskName(value) {
      if (!value) return ''
      if (value.length <= 1) return value
      return value.charAt(0) + '*'.repeat(value.length - 1)
    }
  }
}
</script>

使用自定义指令脱敏

<template>
  <div v-mask-name="name"></div>
</template>

<script>
export default {
  data() {
    return {
      name: '王五'
    }
  },
  directives: {
    'mask-name': {
      bind(el, binding) {
        const name = binding.value
        if (name.length <= 1) {
          el.textContent = name
        } else {
          el.textContent = name.charAt(0) + '*'.repeat(name.length - 1)
        }
      }
    }
  }
}
</script>

使用方法脱敏

vue实现姓名脱敏

<template>
  <div>{{ maskName(name) }}</div>
</template>

<script>
export default {
  data() {
    return {
      name: '赵六'
    }
  },
  methods: {
    maskName(name) {
      if (!name) return ''
      if (name.length <= 1) return name
      return name.charAt(0) + '*'.repeat(name.length - 1)
    }
  }
}
</script>

不同脱敏规则实现

*保留姓氏,名字用代替

function maskName(name) {
  if (!name) return ''
  if (name.length <= 1) return name
  return name.charAt(0) + '*'.repeat(name.length - 1)
}

*保留首尾字符,中间用代替

function maskName(name) {
  if (!name) return ''
  if (name.length <= 2) return name
  return name.charAt(0) + '*'.repeat(name.length - 2) + name.charAt(name.length - 1)
}

复姓处理

function maskName(name) {
  if (!name) return ''
  const compoundSurnames = ['欧阳', '上官', '司马', '诸葛'] // 常见复姓列表
  for (const surname of compoundSurnames) {
    if (name.startsWith(surname)) {
      return surname + '*'.repeat(name.length - surname.length)
    }
  }
  if (name.length <= 1) return name
  return name.charAt(0) + '*'.repeat(name.length - 1)
}

注意事项

  1. 处理空值或非法输入时应有容错机制
  2. 考虑国际化场景,不同语言姓名可能有不同格式
  3. 复姓处理需要根据实际业务需求调整
  4. 性能考虑,频繁更新的数据建议使用计算属性

以上方法可以根据实际业务需求组合使用或调整脱敏规则。

标签: 姓名vue
分享给朋友:

相关文章

vue实现贴图

vue实现贴图

Vue 实现贴图功能 在Vue中实现贴图功能通常涉及将图片动态添加到指定位置或元素上。以下是几种常见实现方式: 使用v-bind动态绑定图片 通过数据驱动的方式动态更换图片源: <templ…

vue实现ai

vue实现ai

Vue 实现 AI 功能 Vue.js 可以通过集成第三方 AI 服务或本地 AI 模型来实现 AI 功能。以下是几种常见的方法: 集成第三方 AI API 使用 Vue 调用如 OpenAI、Go…

vue实现markdown

vue实现markdown

Vue 实现 Markdown 编辑器 在 Vue 中实现 Markdown 编辑器可以通过集成第三方库或自定义解析器完成。以下是两种常见方法: 使用第三方库(如 marked 或 markdown…

分页实现vue

分页实现vue

分页实现(Vue) 在Vue中实现分页功能通常需要结合前端分页逻辑和后端API支持。以下是两种常见的实现方式: 前端分页实现 适用于数据量较小的情况,直接在客户端完成分页逻辑。 <templ…

vue实现切换

vue实现切换

Vue 实现切换功能的方法 在 Vue 中实现切换功能可以通过多种方式实现,以下是一些常见的方法: 使用 v-if 和 v-else 指令 通过条件渲染实现切换功能,适用于简单的显示/隐藏场景。…

vue observer实现

vue observer实现

Vue Observer 实现原理 Vue 的响应式系统核心是通过 Object.defineProperty(Vue 2)或 Proxy(Vue 3)实现的 Observer 模式。以下是关键实现细…