ES6解构获取嵌套对象属性

时间:2019-09-27 06:06:29

标签: javascript ecmascript-6

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

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。如果未提供任何值,则应具有默认值。

2 个答案:

答案 0 :(得分:2)

您可以使用{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));

答案 1 :(得分:1)

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

就像您对value所做的那样进行破坏。