gpt4 book ai didi

javascript - 有什么方法可以根据外部值来依赖对象中键的存在吗?

转载 作者:行者123 更新时间:2023-11-30 08:18:03 25 4
gpt4 key购买 nike

我想根据标志值在对象中设置一些键

例如

const ourFlag = true //true or false depends on case

const ourObject = {
name: 'Pablo',
secondName: 'Picasso',
[ourFlag && 'age']: 20,
[ourFlag && 'moreComplexValue']: [
{
val: true
},
{
val: false
}
]
}

只要 ourFlag 设置为 true 一切都按我预期的那样工作,但是当我将它的值更改为 false 时,一些奇怪的事情开始了来。

property age 不再存在 - 好但是属性 moreComplexValue 现在是 false

当 flag 为 false 时我得到的代码:

{
name: 'Pablo',
secondName: 'Picasso',
// age disappear as I expected
false: [ //why!?!
{
val: true
},
{
val: false
}
]
}

当 flag 为 true 时我得到的代码:

{ .    //brilliant everything is fine
name: 'Pablo',
secondName: 'Picasso',
age: 20,
moreComplexValue: [
{
val: true
},
{
val: false
}
]
}

有什么方法可以用计算属性来处理它?<​​/p>

最佳答案

[flag && key] 评估为 falsekey,这正是您的字面量所做的,将 false 到一个字符串并在标志为 false 时覆盖它。

更好的选择是使用对象展开 ...flag && object,在真实情况下它将展开为对象,并展开为空的 Boolean在错误的情况下,因此基本上跳过它。

let ourFlag = true

const a = {
name: 'Pablo',
secondName: 'Picasso',
...ourFlag && {age: 20},
...ourFlag && {moreComplexValue: [1, 2, 3]}
}

ourFlag = false


const b = {
name: 'Pablo',
secondName: 'Picasso',
...ourFlag && {age: 20},
...ourFlag && {moreComplexValue: [1, 2, 3]}
}

console.log(a)
console.log(b)

关于javascript - 有什么方法可以根据外部值来依赖对象中键的存在吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58643672/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com