解构嵌套对象

时间:2018-11-16 00:10:27

标签: javascript ecmascript-6

我正在尝试使用ES6,并尝试将ES5函数转换为ES6。

ES5:

const ResponseData = {
    items: [{name: 'Matt'}]
}

function getName(ResponseData) {
    let itemDetails = ResponseData && ResponseData.items && ResponseData.items[0];
    return itemDetails.name;
}

但是,我不确定如何在ES6解构中访问项[0]。

这是我的尝试:

function getItemES6(ResponseData) {
 const { items : item = []   } = ResponseData;
 return item;
}

这几乎给了我项目数组,如何获得项目[0]并使用ES6检查.name?

很少与破坏混淆。有人可以开导吗?

2 个答案:

答案 0 :(得分:4)

您可以解构嵌套的对象和数组,添加添加空对象/数组作为默认值,以获取undefined(如果值不存在):

const ResponseData = { items: [{name: 'Matt'}] };

const getItemES6 = ({ items: [{ name } = {}] = [] }) => name;

console.log(getItemES6(ResponseData));

答案 1 :(得分:1)

您可以这样分解对象:

const { key: yourVar = 'defaultVal' } = obj

数组是相似的,但是不是引用键,而是引用元素本身: const [ firstElem, secondElem ] = arr

const obj = {
  a: 1,
  b: {
    b1: 'a'
  }
};

const objWithArr = {
  a: 1,
  b: [{
    key: 5,
  }, {
    key: 6
  }]
}

const {
  b: {
    b1: b1Val = 'default',
  } = {},
} = obj;

const {
  b: [{
      key: firstKey,
    } = {},
    {
      key: secondKey,
    } = {}
  ] = [],
} = objWithArr;

console.log(b1Val);
console.log(firstKey);
console.log(secondKey);