代码之家  ›  专栏  ›  技术社区  ›  TechnoCorner

正在销毁嵌套对象

  •  1
  • TechnoCorner  · 技术社区  · 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 回复  |  直到 6 年前
        1
  •  3
  •   Ori Drori    6 年前

    您可以销毁嵌套的对象和数组,添加“添加空对象/数组”作为默认值以获取 undefined 如果值不存在:

    const ResponseData = { items: [{name: 'Matt'}] };
    
    const getItemES6 = ({ items: [{ name } = {}] = [] }) => name;
    
    console.log(getItemES6(ResponseData));
        2
  •  1
  •   Hodrobond    6 年前

    破坏对象的方式如下:

    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);