使用ES6进行对象销毁

时间:2019-08-19 10:37:19

标签: javascript arrays object nested destructuring

我有这个嵌套对象,它也包含一个数组。

result:{
"a": [{ "b": { "c": 1,
               "d": 2,
               "e": 3
              },
        "f": 0
      }]
}

如果我需要d值,如何使用ES6对该对象进行解构?

2 个答案:

答案 0 :(得分:5)

对象解构符号就像对象文字符号一样,位于等号的另一侧。因此,您只编写了要创建d所需的结构的代码,然后在其中放置d变量/常量名称即可。

您似乎向我们展示了对象的内容(例如,它具有名为result的属性),因此:

const obj = {
  result: {
    "a": [{
      "b": {
        "c": 1,
        "d": 2,
        "e": 3
      },
      "f": 0
    }]
  }
};
const {
  result: {
    "a": [{
      "b": {
        d
      }
    }]
  }
} = obj;
console.log(d);

我并不是说我会在这里使用解构。实际上,我可能不会。但是您可以。 :-)

如果result是包含对象的变量,则删除该层:

const obj = {
  "a": [{
    "b": {
      "c": 1,
      "d": 2,
      "e": 3
    },
    "f": 0
  }]
};
const {
  "a": [{
    "b": {
      d
    }
  }]
} = obj;
console.log(d);

当然,这是要从d first 条目中选择a的面值问题。您可以将其概括为这样获得条目n(我回到假设result是对象的一部分):

const obj = {
  result: {
    "a": [
      {
        "b": {
          "c": 1,
          "d": 2,
          "e": 3
        },
        "f": 0
      },
      {
        "b": {
          "c": 1,
          "d": 4, // ***
          "e": 3
        },
        "f": 0
      }
    ]
  }
};
const n = 1; // Which entry in `a` to get
const {
  result: {
    "a": {
      [n]: {
        "b": {
          d
        }
      }
    }
  }
} = obj;
console.log(d);

我正在使用对象a进行结构分解,而不是使用具有计算出的属性名称的数组结构分解。我可以这样做是因为数组是对象。


数组解构符号也和数组文字符号一样。 :-)

答案 1 :(得分:-7)

您想要d的值吗?

result.a[0].b.d ?