为什么在尝试析构对象时得到“析构表达式只能有标识符引用”?

问题描述

我有以下对象

const john = {
  family: [
    { firstName: 'david',secondName: 'jana' },{ firstName: 'eyal',secondName: 'shani ' },],};

我想在一次操作中获得 'david' 字符串。所以我尝试了以下代码

const { family:[0]{firstName}}} = john;

但我收到错误

“解构表达式只能有标识符引用”

有人能用简单的话告诉我(因为我是语言新手)我做错了什么?

解决方法

要使用解构提取深度嵌套的值,语法几乎与声明具有这些属性的对象相同。 family:[0] 不是有效的语法 - 相反,您需要用数组分隔符将 family 的内容括起来:

const john = {
  family: [{
      firstName: 'david',secondName: 'jana'
    },{
      firstName: 'eyal',secondName: 'shani '
    },],};

const { family:[{firstName}]} = john;

console.log(firstName);

但我强烈建议不要使用这样的嵌套解构。写作、阅读和理解太难了。至少在外部访问中最好使用纯点符号,例如

const john = {
  family: [{
      firstName: 'david',};

const { firstName } = john.family[0];
console.log(firstName);

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...