首页 > 解决方案 > 解构一个深度嵌套的对象,其父对象之一是 Javascript 中的一个数组

问题描述

我有一个对象,我想在一行中解构一个嵌套对象,该对象具有一个数组作为父对象。鉴于以下对象,这甚至可以在一行中解构吗?

const deepObj = {
  allInformation: {
    edges: [
      {
        node: {
          address: 'Never Never Land',
          email: 'daffyduck@neverneverland',
          phoneNumber: '146 246'
        }
      }
    ]
  }
}

// one liner object destructuring in function signature?? 
const oneLiner = (deepObj) => (...)

目标是访问函数签名中addressemail和变量。phoneNumber

标签: javascriptwebnode.js

解决方案


假设对象在每个级别上始终具有价值,您可以执行以下操作:

const deepObj = {
  allInformation: {
    edges: [
      {
        node: {
          address: 'Never Never Land',
          email: 'daffyduck@neverneverland',
          phoneNumber: '146 246'
        }
      }
    ]
  }
}

// one liner object destructuring in function signature?? 
const oneLiner = ({ allInformation: { edges: [{ node: { address, email, phoneNumber} } ] } }) => {
  console.log(address)
  console.log(email)
  console.log(phoneNumber)
}

oneLiner(deepObj)

如果这些嵌套对象中的任何一个可能未定义,则必须添加一个空对象作为默认值,如下所示:

node: { address, email, phoneNumber} = {}

推荐阅读