js map根据value获取key

举报
SHQ5785 发表于 2023/03/14 09:19:34 2023/03/14
【摘要】 一、前言前端通过对象保存字典值用于列表字段翻译或者加载下拉框都是很常见的操作,有时也会需要根据字典值的value获取对应的key。测试数据paramsMap: { orderType: { '0': '咨询', '1': '投诉', '2': '举报', '3': '建议', '4': '求助', '5': '表扬', }, subjectType...

一、前言

前端通过对象保存字典值用于列表字段翻译或者加载下拉框都是很常见的操作,有时也会需要根据字典值的value获取对应的key

测试数据

paramsMap: {
  orderType: {
    '0': '咨询',
    '1': '投诉',
    '2': '举报',
    '3': '建议',
    '4': '求助',
    '5': '表扬',
  },
  subjectType: {
    'LB': '劳保',
    'XW': '消委',
    'GA': '公安',
    'GT': '国土',
    'CG': '城管',
    'GJJ': '公积金',
    'ZH': '综合',
  },
},

假设页面用到两个类型的字典值,我们使用paramsMap对象保存。(正常使用可以调用接口加载)

根据key获取value

getParamValue(paramType, code) {
  if (!Object.prototype.hasOwnProperty.call(this.paramsMap, paramType)) {
    return '参数类型错误';
  }
  return this.paramsMap[paramType][code];
},

调用时指定参数类型

this.getParamValue('orderType', '1');

根据value获取key

getParamCode(paramType, value, compare = (a, b) => a === b) {
  if (!Object.prototype.hasOwnProperty.call(this.paramsMap, paramType)) {
    return '参数类型错误';
  }
  return Object.keys(this.paramsMap[paramType]).find(k => compare(this.paramsMap[paramType][k], value))
}

this.getParamCode('subjectType', '公安');

二、拓展阅读

在前端项目开发过程中,为优化用户体验,可考虑在用户输入查询条件后按回车键实现搜索效果。实现方法如下:

el-input 监听键盘按下状态得用@keyup.enter.native,如果是非el-input 组件,可以直接用@keyup.enter

<el-input @keyup.enter.native="search" v-model='form.searchAttr' ></el-input>

<input @keyup.enter="search" ></el-input>

Vue中,已经为常用的按键设置了别名,这样我们就无需再去匹配keyCode,直接使用别名就能监听按键的事件。

【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。