如何在对象文字键中使用表达式?



我有一个开关^

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))

虽然这不会抛出错误,但它不能工作。

你不能。属性名是字符串或符号。

当您使用[]语法时,表达式在对象创建时求值。.

你不能分配在查找时求值的代码。这就是switchif/else的作用

在您的例子中,由于includes()返回一个布尔值,您只是创建了一个具有属性名为"true""false"的对象。

可以let url = cases.true,但这将是一个可怕的黑客。

相关内容

  • 没有找到相关文章

最新更新