前端怎么定义字典更好呢

172 天前
 shilianmlxg

我需要一个字典,要有一下三点,并且后期可以扩展字段
key 键名称(下面的 OR,PACU)
value 值(下面的 1,2)
label 值
color 值(可选)

现在定义的两个 一个 enum 一个 map 。觉得有点多余,

问下最优解是什么,

我希望通过访问字段的方式就能知道该字典所对应的值,比如 ROOM_TYPE_ENUM.OR

export const enum ROOM_TYPE_ENUM {

OR = 1, // 手术间

PACU = 2 // 复苏室

}



export const ROOM_TYPE_MAP = [

{

label: '手术间',

value: 1

},

{

label: '复苏室',

value: 2

},

]

3382 次点击
所在节点    程序员
29 条回复
Moonless
172 天前
w568w
172 天前
@Moonless

@Livid AI 回复
han3sui
172 天前
楼上这个有点过了吧,AI 回答感觉没什么问题啊,给出了明确的方案和解释,又不是瞎编的
han3sui
172 天前
而且人家还特地贴了图进来,都不是直接复制粘贴
superedlimited
172 天前
@han3sui 网警是这样的。
duzhuo
172 天前
@han3sui 贴图才是最不好的,想测试都麻烦
ZZITE
172 天前
```
const ROOM_TYPE_KEYS = ["OR", "PACU"] as const;

type RoomTypeMap = {
[key in (typeof ROOM_TYPE_KEYS)[number]]: {
label: string;
value: number;
color?: string;
};
};

export const ROOM_TYPE_MAP: RoomTypeMap = {
OR: {
label: "手术间",
value: 1,
},
PACU: {
label: "复苏室",
value: 2,
},
};
```

我一般会这么写
SimonOne
172 天前
@han3sui #3 因为站长不让贴 AI 回复,这是个人站忘啦
accelerator1
172 天前
站长的想法是不要让 AI 回复充斥网站,而不是禁止 AI 工具的使用。
楼主的问题的确可以 GPT 解决的,工具还是要学会使用的,我们公司招人,会不会 GPT 也是一项指标了。。。
meteor957
172 天前
枚举不方便通过值去查询到对应的 key
Moonless
172 天前
@w568w Sorry ,sorry ,觉着楼主的提问很合适直接对话,试了下结果又很合理,就贴了出来。AI 工具确实很方便😄,后续会留意。
@han3sui @accelerator1 哈哈,确实是看了答案的合理性
RogerL
172 天前
我跟 1L 的做法差不多,但是我建议用数组,然后通过 reduce 转换成对象。
因为数组字典很多情况下你可能会做下拉展示,可能会对排序有需求
dfkjgklfdjg
172 天前
@RogerL #12 ,我和你反过来,用对象然后用 `Object.values()` 转成数组去下拉展示。
connection
172 天前
key string 用 object 定义
paopjian
172 天前
学了八股文才知道不要乱用 Object 作为数组,不然容易飞出去找原型链,还是 map 安全点
deepshe
172 天前
我也是用枚举类去转成数组, 判断下是不是数字类型,
Object.entries(enumObj).map(([key, value]) => {
if (isNaN(Number(key))) {
arr.push({ label: key, value });
}
});
xocus
172 天前
写个 enum ,再写一个 dict 是好麻烦,但是我还是这样分开写 2 个,没找到好方法
laobobo
172 天前
@w568w 有毛病啊,人家发个图也不行么
rain0002009
172 天前
export enum ROOM_TYPE {
手术间 = 1,
复苏室,
}

直接中文又能用又直观
dingdangnao
172 天前
@rain0002009 #19 魔鬼!!😂😂

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1053856

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX