提问人:Eli Tref 提问时间:12/14/2022 更新时间:12/14/2022 访问量:131
如何在 Object 字面键中使用表达式?
How to use an expression in the Object literal key?
问:
我有一个开关^
let s = "aaa"
switch (true) {
case s.includes('a'):
url = 'https://a.com/wp-admin/post-new.php'
console.log(url)
break
case s.includes('b'):
url = 'https://b.com/wp-admin/post-new.php'
console.log(url)
break
default:
console.log('default')
break
}
我正在尝试将其更改为文字对象,但我无法弄清楚如何正确指定 s.includes 条件作为对象键
const objLit = (s) => {
const cases = {
//s.includes('a'): 'https://a.com/wp-admin/post-new.php',
[`${s.includes('a')}`]: 'https://a.com/wp-admin/post-new.php',
//s.includes('b'): 'https://b.com/wp-admin/post-new.php',
[`${s.includes('b')}`]: 'https://b.com/wp-admin/post-new.php',
}
let url = cases[s]
return url
}
console.log(objLit(s))
虽然这不会引发错误,但它不起作用。
答:
0赞
Quentin
12/14/2022
#1
你不能。属性名称为字符串或符号。
使用语法时,将在创建对象时计算表达式。[]
不能分配在查找时计算的代码。这就是和/是做什么用的。switch
if
else
在您的例子中,由于返回一个布尔值,因此您只是在创建一个具有名为 和 的属性的对象。includes()
"true"
"false"
你可以说,但这将是一个可怕的黑客。let url = cases.true
评论
0赞
Eli Tref
12/14/2022
谢谢。我想简化代码。太糟糕了,这是不可能的:(
评论
"false"
"true"