使用ES6进行对象销毁

-3 javascript arrays nested object destructuring

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

result:{
"a": [{ "b": { "c": 1,
               "d": 2,
               "e": 3
              },
        "f": 0
      }]
}
Run Code Online (Sandbox Code Playgroud)

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

T.J*_*der 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);
Run Code Online (Sandbox Code Playgroud)

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

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

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

当然,您的问题是d要从中的第一个条目开始的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);
Run Code Online (Sandbox Code Playgroud)

我将对象分解用于a而不是数组分解,并具有计算出的属性名称。我可以这样做,因为数组是对象。


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

  • @Rajesh-对我来说,如果不走得太远,进行销毁是很棒的。对我来说,以上内容太过分了。:-) (2认同)