ES6销毁对象

时间:2019-07-24 15:41:15

标签: javascript ecmascript-6 destructuring

我不熟悉ES6破坏。我有一个包含另一个对象的对象。我想存储嵌套对象中的某些值。

例如-

z = {g: 1, h: 2, i: {d1:5, d2:6, d3:7}}

当我这样做

let { g, i : {d1, d3}, ...less } = z

less变量仅存储h,而不存储d2

有没有办法做到这一点

less = {h, i : {d2}}

3 个答案:

答案 0 :(得分:0)

不,没有。你能做的就是

let { g, i: { d1, d3, ...less2 }, ...less } = z
let less = { ...less, i: less2 };

这会提取剩余部分,然后将它们合并在一起,同时保留形状。

答案 1 :(得分:0)

不,很遗憾,这不可能。
但是,您可以通过第二次剩余价差从i中提取缺失值:

let z = {g: 1, h: 2, i: {d1:5, d2:6, d3:7}};
let { g, i : {d1, d3, ...i_less}, ...rest_less } = z;
let less = { i: i_less, ...rest_less };
console.log(less)

答案 2 :(得分:0)

这是我的方式,希望对您有所帮助。

let z = {
  g: 1,
  h: 2,
  i: {
    d1:5,
    d2:6,
    d3:7
  }
}

let {g, i: {d1, d3, ...less1}, ...less2} = z
let less = {
  i: less1,
  ...less2,
}

console.log(less); // output: {h: 2, i:{d2:6}}