【问题标题】:ES6 destructuring get nested object propertyES6解构获取嵌套对象属性
【发布时间】:2019-09-27 06:06:29
【问题描述】:

我在数组中有以下对象。 迭代时,我需要访问循环中的特定属性。我能够获取基本属性,但无法获取嵌套属性值。

let data = [{
  id:"0",
  value:{
    empId:"123",
    emp_type:"perm",
    schedule:{
      abcSchedule:{cron_str: "0 13 * * 0,3,4,5,6"}
    }
  }
}];


var newMap = data.map(({ idx: i, value: { empId, emp_type, /*cron_str ? how to get  */  } }) => console.log(emp_type));

如何在解构的帮助下在地图中获得 cron_str。如果没有提供值,那么它应该有默认值。

【问题讨论】:

  • 您已经解构了嵌套的empIdemp_type。您是否尝试过为scheduleabcSchedule 做同样的事情?

标签: javascript ecmascript-6


【解决方案1】:

你可以使用{value:{schedule:{abcSchedule:{cron_str}}}}:

let data = [{
    id: "0",
    value: {
      empId: "123",
      emp_type: "perm",
      schedule: {
        abcSchedule: {
          cron_str: "0 13 * * 0,3,4,5,6"
        }
      }
    }
  },
  {
    id: "1",
    value: {
      empId: "1234",
      emp_type: "merm",
      schedule: {
        abcSchedule: {
        }
      }
    }
  },
  {
    id: "2",
    value: {
      empId: "1235",
      emp_type: "mtermerm",
      schedule: {
        abcSchedule: {
          cron_str: null
        }
      }
    }
  },
  {
    id: "3",
    value: {
      empId: "12356",
      emp_type: "apple",
      schedule: {
        abcSchedule: {
          cron_str: undefined
        }
      }
    }
  }
];


var newMap = data.map(({
  value: {
    empId,
    emp_type,
    schedule: {
      abcSchedule: {
        cron_str
      }
    }
  }
}) => console.log(empId, cron_str));

【讨论】:

  • 谢谢,我该如何处理未定义的 cron_str ?
  • @user804401 它确实处理了cron_strundefined null 值。
【解决方案2】:
 var newMap = data.map(({ idx: i, value: { empId, emp_type, schedule: { abcSchedule: { cron_str }}} }) => console.log(emp_type, cron_str));

就像你对 valuealready 所做的那样解构。

【讨论】:

  • 谢谢,我该如何处理未定义的 cron_str
猜你喜欢
  • 2018-02-06
  • 2021-11-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-17
  • 2018-07-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多