首页 > 解决方案 > Javascript 将字符串常量定义为速记属性

问题描述

有没有办法像速记属性一样定义字符串值,例如(这不起作用):

const dict = {
    USER_LOGIN,
    USER_LOGOUT
};

这将相当于:

const dict = {
    USER_LOGIN: "USER_LOGIN",
    USER_LOGOUT: "USER_LOGOUT"
};

我想定义一个常量字典,但我想知道是否可以以某种方式避免重复模式MYVALUE : "MYVALUE"

是否有任何简写方式来声明具有与其字符串值等效的值的对象键,类似于上面的(不工作)代码?

标签: javascriptecmascript-6

解决方案


没有内置的方法可以自动执行类似的操作,但是如果您想保持代码 DRY,您可以创建一个辅助函数,当传递一个字符串数组时,它会创建一个具有这些属性的对象:

const makeDict = arr => arr.reduce((a, str) => ({ ...a, [str]: str }), {});
const dict = makeDict(['USER_LOGIN', 'USER_LOGOUT']);
console.log(dict);


推荐阅读