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"