闲谈:如何在js中定义枚举类

2023-10-27

定义枚举的意义和场景

今天遇到了一个场景,页面中有一个下拉框,里面两个选项:国有企业,民营企业。代码结构是这样的

[
	{
		text: '国有企业',
		value: 1
	},
	{
		text: '民营企业',
		value: 2
	}	
]

value是用来存储,text是用来展示。数据回显的时候后端会传value,然后前端根据value选择下拉框的test展示。以前的代码都是使用if···else来判断value和哪个text匹配。比如

if(value == 1{
	return '国有企业';
}
if(value == 2{
	return '民营企业';
}

之后随着版本迭代,这个下拉框的枚举值发生变化,枚举项增加,代码的维护变得很繁琐,因为这么一个下拉框不止在一处出现,一模一样的代码要写多份。所以决定将这一类使用枚举代码采用和Java一样的枚举类实现。


js定义枚举

js没有枚举类,只能自己定义,我们只要想定义一个普通的类一样,让这个类具有枚举的特征就行了。

let EnterpriseEnum = {
    STATE_OWNED_ENTERPIRSE: {text: "国有企业" , value: 1},
    PRIVATE_ENTERPIRSE: {text: '民营企业', value: 2),
    MIXED_OWNERSHIP_ENTERPRISE: {text: '混合所有制企业', value: 3}
}

上面是定义了枚举选项。相当于一个类中包含其他类,这些其他类就是枚举选项,有text和code两个属性。下面再写一个常用的根据code得到text的方法getTextByCode()

let EnterpriseEnum = {
    STATE_OWNED_ENTERPIRSE: {text: "国有企业" , value: 1},
    PRIVATE_ENTERPIRSE: {text: '民营企业', value: 2),
    MIXED_OWNERSHIP_ENTERPRISE: {text: '混合所有制企业', value: 3}
    getTextByCode: function(code){
        let text = null;
        $.each(EnterpriseEnum, function(index, value) {
            if(code == value.value) {
                text = value.text;
                return false;
            }
        })
        return text;
    }
}

知道如何在js中遍历一个类的所有成员变量是getTextByCode的关键。这里我使用$.each语法。

$.each(EnterpriseEnum, function(index, value)中,$.each的第一个参数是我们想要遍历的类,index是指遍历到了第几个成员,从0开始。value是指遍历到的成员本身。function中定义遍历的逻辑,如果想要遍历到中途就退出遍历,那就要使用return false退出。

定义好枚举以后,下拉框的逻辑就可以写成一句话

return EnterpriseEnum.getTextByCode(code);

并且以后枚举还有改动都可以只去修改一处代码,不用改多份。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

闲谈:如何在js中定义枚举类 的相关文章

  • centos mysql jar 驱动包_JDBC连接Mysql数据库详解

    JDBC Java DataBase Connectivity 即Java数据库连接 简而言之 就是通过Java语言来操作数据库 我们可以把JDBC理解成是官方定义的一套操作所有关系型数据库的规则 规则即接口 也就是说 官方定义了一套操作所
  • java实现单点登陆(SSO)

    java实现单点登陆 SSO 网络域名必须完全一致 才代表同一站点 域名映射 访问后面的 会跳转到前面 单点登陆概念 多系统 单一位置登录 实现多系统同时登陆 常出现在互联网和企业级平台中 单点登陆一般是用于互相授信的系统 实现单一位置登录
  • Unity Shader简介

    Shader 中文名为着色器 对很多开发者来说它是一个神秘的存在 想学但是又不知道如何去学 或者学了一段时间发现Get不到它的点 始终感觉游离在外 无法开窍 本文来讲下如何从零基础入门Shader 目的在于让初学Shader的程序或者美术可
  • C++ MyHttpServer网络服务器实验

    C MyHttpServer网络服务器实验 一 实验要求 二 文件夹管理 三 实验结果 四 程序代码 C 课程老师把这一个实验分成了五个小实验 VS版本是2019的 涉及Http协议的请求处理 响应处理 多线程等 有一两个实验老师的示例代码
  • 原理图改动后更新PCB报错的解决方法

    今天我在用Altium Designer 20绘制PCB时遇到了一个情况 在更改了原理图以后再进行Update PCB Document的时候软件会提示错误 截图如下 遇到这种情况时大家往往束手无策而选择重新建立一个空白的PCB板再去生成一
  • Spring MVC传递List类型参数报错:No primary or default constructor found for interface java.util.List]使用两种注解解决

    在测试GenericConverter传递List数组的时候 出现No primary or default constructor found for interface java util List with r这个错误 解决 因为报错
  • 单图像超分辨率重建总结

    单图像超分辨率重建总结 定义 单图像超分辨率重建 Single Image Super resolution Reconstruction SISR 旨在从给定的低分辨率 LR 图像中 重建含有清晰细节特征的高分辨率 HR 图像 是计算机视
  • vue和elementui实现多表格选择和查看已选的功能

    目录 功能描述 数据 HTML js CSS 功能描述 经常碰到需要写多个表格选择 并且可以查看已选项目的功能 实现功能大致如此 左侧是可选择的表 点击表展示每个表里可选字段 然后点击查看已选 可以展示以及选择的表格数据 如下图 涉及敏感字
  • BeanUtils应用,tojavabean

    package com bochy tojavabean import java util HashMap import java util Map import org apache commons beanutils locale co
  • 高清壁纸wallhaven.cc下载图片

    建议不要用多线程 设置延迟 不然会被封IP import requests import os import re import time from concurrent futures import ThreadPoolExecutor
  • GCN代码详解(SEMI-SUPERVISED CLASSIFICATION WITH GRAPH CONVOLUTIONAL NETWORKS(2017ICLR))

    不足之处请大家多多指点 文章目录 链接 代码详解 链接 论文题目 用图卷积网络进行自监督分类 GCN 2017ICLR 论文链接 1609 02907v3 pdf arxiv org 代码链接 tkipf pygcn Graph Convo
  • 总链接地址

    链接 达内博客 链接地址 程序媛泡泡 https blog csdn net weixin 43884234 cgblpx 皮皮虾 https blog csdn net u012932876 闪耀太阳 https blog csdn ne
  • python环境离线打包环境、离线环境迁移、离线环境复制、离线环境克隆

    我们经常使用conda来管理自己环境 时间久了 环境中的依赖错综复杂 有的通过pip或者conda下载 有的是离线安装 有的是通过魔法下载 这时候如果要将本机环境复制到另一台计算机中就会非常麻烦 甚至另一台计算机无法联网 这时候可以使用co
  • uni-app简单介绍

    uni app简单介绍 https uniapp dcloud io 一 什么是uni app uni app 是一个使用 Vue js 开发所有前端应用的框架 开发者编写一套代码 可发布到iOS Android Web 响应式 以及各种小
  • 转:Vue项目中的token验证登录(前端部分)

    声明 此文章是转载 2 问题 做一个登录界面 我选择的是用token进行验证登录 我用的前端框架是Vue js 和 element ui 如何在vue 中使用token进行验证登录 3 思考 1 利用token进行验证登录 用户进行登录操作
  • TF卡目录显示文件夹变0字节的方法

    关于电脑上的目录打不开是什么原因 电脑目录打不开是什么原因这个许多人还不清楚 今天小编来为大家解答目录打不开状况 此刻让好多人一起来瞧瞧吧 TF卡目录显示文件夹变0字节的方法 工具 软件 sayRecy 步骤1 先百度搜索并下载程序打开后
  • Python:赋值,copy和deepcopy区别

    参考 Python赋值 copy deepcopy区别 结论 copy 与deepcopy 之间的主要区别是python对数据的存储方式 python2中 需要import copy模块 python3中 直接可以使用copy 方法 但de
  • Postman —— postman实现参数化

    什么时候会用到参数化 比如 一个模块要用多组不同数据进行测试 验证业务的正确性 Login模块 正确的用户名 密码 成功 错误的用户名 正确的密码 失败 postman实现参数化 在实际的接口测试中 部分参数每次发送请求时都要唯一 比如注册
  • jacoco检测功能或自动化测试覆盖率

    参考文档 http t csdn cn QqCSh http t csdn cn HonVL 目录 下载jacoco 启动jacocoagent监控被测项目 执行手工测试 生成exec文件 生成report报告 jacoco代码覆盖率报告分

随机推荐

  • 【Hexo博客搭建】将其部署到GitHub Pages(二):如何初始化并部署?

    系列目录 Hexo博客搭建 将其部署到 GitHub Pages 一 前期要做哪些准备 Hexo博客搭建 将其部署到 GitHub Pages 二 如何初始化并部署 Hexo博客搭建 将其部署到 GitHub Pages 三 怎么写作以及更
  • awr 自动 mail 发送设置

    1 各节点 AWR 自动生成 script 设置 awrrun autoawr sql cat data run awrrun bin sh cd data awrrpt ORACLE HOME u01 product oracle exp
  • Ubuntu 配置 C/C++ 开发环境

    文章目录 0 更新和升级系统软件 1 安装 build essential 软件包 2 安装 gdb 3 安装 cmake 0 更新和升级系统软件 在终端中输入以下命令对软件进行刷新 保证后续安装的软件都是最新的 sudo apt upda
  • 解决微信小程序安卓手机访问不到图片,无法显示图片

    关于微信小程序不显示图片 通病可能有以下几个可能性 非本地图片 确定图片资源存在 copy 图片url再浏览器打开 确定图片资源存在且能正常访问 本地图片 确定相对路径或者绝对路径正确 微信小程序图片路径 不可以存在中文 使用英文做路径和文
  • DataX同步Hive数据丢失,源码修复

    文章目录 DataX简介 DataX 商业版本 DataX的特点 DataX同步Hive数据丢失 DataX的Hive数据源HdfsReader插件 DataX简介 DataX 是阿里云 DataWorks数据集成 的开源版本 在阿里巴巴集
  • 推荐几款好用的压缩软件

    前言 压缩工具作为电脑装机必备软件我们在日常生活中都会经常用到 但是诸如好压 2345 WinRAR等一些常见的压缩软件都会有各种广告弹窗的现象 烦人至极 以下推荐几款免费无广告的强大压缩工具 7 Zip 仅有1M左右的安装包将轻巧便捷阐述
  • [从零开始学习FPGA编程-26]:进阶篇 - 基本组合电路-数据选择器(Verilog语言)

    作者主页 文火冰糖的硅基工坊 文火冰糖 王文兵 的博客 文火冰糖的硅基工坊 CSDN博客 本文网址 目录 前言 第1章 数据选择器 1 1 数据选择器概述与原理
  • 能力和结果之间的关系

    大家好 这里是大话硬件 今天这篇文章想和大家分享前段时间的一点工作体会 关于个人能力和工作结果之间的关系 其实这些感悟是在上周三晚上下班 走在回家的路上 脑海中突然出现这样的体会 回到家里立马写了下来 因为是即时的灵感 完全是因为工作状态触
  • Python有限体积流体开尔文-亥姆霍兹不稳定性

    本文 我们将使用有限体积方法模拟开尔文 亥姆霍兹不稳定性 我们将考虑一种可压缩流体 它具有向背景相反方向移动的高密度流 速度切变引起了著名的不稳定性 有时在云层和木星的大红斑中也可以看到这种不稳定性 有限体积法 我们将描述有限体积法来模拟理
  • 【Web自动化】Python3+Selenium 框架⑸——登录页面类方法

    前言 Selenium是一个用于Web应用程序自动化测试工具 Selenium测试直接运行在浏览器中 就像真正的用户在操作一样 支持的浏览器包括IE 7 8 9 10 11 Mozilla Firefox Safari Google Chr
  • mybatisplus多表关联查询_神奇的SQL:探索多表连接查询的执行细节

    作者 jb hz 来源 https blog csdn net qq 27529917 先构建本篇博客的案列演示表 1 驱动表如何选择 驱动表的概念是指多表关联查询时 第一个被处理的表 使用此表的记录去关联其他表 驱动表的确定很关键 会直接
  • @Cacheable key的使用

    key属性是用来指定Spring缓存方法的返回结果时对应的key的 该属性支持SpringEL表达式 当我们没有指定该属性时 Spring将使用默认策略生成key 我们这里先来看看自定义策略 至于默认策略会在后文单独介绍 自定义策略是指我们
  • 【VTK】VTK9.1+QT6+VS2019编译

    VTK9 1 QT6 2 3 VS2019编译 环境准备 vtk9 1编译 QtCreator工程引入VTK 环境准备 QT安装时选上msvc 环境变量添加QT下bin 下载qt vs tools 不必要 https download qt
  • 一张脑图解析 ConcurrentHashMap 的重点知识点

    欢迎在评论区交流 一起学习 一起进步
  • Spring boot Banner和icon

    文章目录 Spring boot Banner和icon 上一节 源码 Spring boot banner 自定义banner 关闭banner 使用图片充当banner 源码分析 Spring boot icon 源码分析 下一节 Sp
  • 华为实习笔试复盘(1)配送站和客户问题

    写在前面 自己玩了很多项目 但是最近准备秋招的过程中 发现自己对于算法和编程语言的基本功夫实在是太欠缺了 投递了华为的实习岗位 4 26参加机考 一做题就发现了自己很多地方都不会 这里写下笔试后的复盘以警醒自己 题目 按照记忆来回顾题目 仅
  • 计算机毕业设计PHP基于微信小程序在线抽签系统(源码+程序+uni+lw+部署)

    该项目含有源码 文档 程序 数据库 配套开发软件 软件安装教程 欢迎交流 项目运行 环境配置 phpStudy Vscode Mysql5 7 HBuilderX Navicat11 Vue Express 项目技术 原生PHP Vue 等
  • UE4用蓝图画出数学柱状图(第一更)

    UE4用蓝图画出数学柱状图 第一更 利用ue4画出数学柱状图主要用的蓝图节点 新建一个widget 在UI蓝图里面直接用上面四个节点是不行的 需要重写一个UI的函数 所有的绘画都要在这个函数里完成 这个引用在C 里写为了只读 且这个函数也不
  • 55_Pandas.DataFrame 转换为 JSON 字符串/文件并保存 (to_json)

    55 Pandas DataFrame 转换为 JSON 字符串 文件并保存 to json 使用pandas DataFrame的方法to json 可以将pandas DataFrame转为JSON格式字符串 str类型 或者输出 保存
  • 闲谈:如何在js中定义枚举类

    定义枚举的意义和场景 今天遇到了一个场景 页面中有一个下拉框 里面两个选项 国有企业 民营企业 代码结构是这样的 text 国有企业 value 1 text 民营企业 value 2 value是用来存储 text是用来展示 数据回显的时