Javascript 这是一种更好的解构对象属性的方法吗?
我有一个变量Javascript 这是一种更好的解构对象属性的方法吗?,javascript,Javascript,我有一个变量标签。属性标签可能不在选项[0]中。我在这里使用可选的链接操作符。有没有更好的方法来分解标签属性 代码如下所示: const label=screenItems.vendor.options[0]?.label 你不是在这里解构。代码应该可以正常工作 但是如果你真的想解构你的解决方案。使用下面的代码段 // assuming you have `screenItems.vendor.options` defined already const options = scre
标签
。属性标签
可能不在选项[0]
中。我在这里使用可选的链接操作符。有没有更好的方法来分解标签属性
代码如下所示:
const label=screenItems.vendor.options[0]?.label
你不是在这里解构。代码应该可以正常工作
但是如果你真的想解构你的解决方案。使用下面的代码段
// assuming you have `screenItems.vendor.options` defined already
const options = screenItems.vendor.options
const { label } = options.length > 0 ? options[0] : {}
if (label) {
// all the code that requires the label
}
在这种情况下,代码也要多得多。我不知道它是否更好,但您可以这样做
这是一个您没有在这里进行分解,但是分解看起来非常难看。您当前的代码看起来很完美(假设它有效)“可选链接操作符”已经发布了吗?看起来像stage4。我们在项目中使用了babel transpiler。@EugeneSunic没有,但目前有一些环境已经实现了它(例如,我刚刚在Chrome79中进行了测试,它可以工作)。而且它可以使用像Babel这样的transpiler在任何地方工作…我相信在ES2020中应该可以使用。如果选项[0]未定义,它将抛出TypeError。请注意,如果
screenItems.vendor.options
没有名为0
的属性,OP的代码将不会抛出,但您的将……我已经在chrome代码段中测试过了。。。如果在范围中定义了screenItems.vendor.options
,则应该可以使用
const obj = {
screenitems: {
vendor: {
options: null
}
}
}
const obj2 = {
screenitems: {
vendor: {
options: [{label:"LABEL"}]
}
}
}
const { screenitems: {vendor: {options} }} = obj2;
const label = options?options[0].label:"No"