ES6 的解构赋值是一种方便快捷的语法,可以让我们更轻松地从数组或对象中取出需要的值。而在实际开发中,我们经常会遇到对象多层嵌套的情况,这时候如何使用解构赋值取出想要的值就成了一个值得探讨的问题。
解构赋值嵌套
在 ES6 中,我们可以使用解构赋值来快速取出数组或对象中的值,例如:
let [a, b] = [1, 2]; let {c, d} = {c: 3, d: 4};
上面的代码分别将数组 [1, 2]
和对象 {c: 3, d: 4}
中的值解构出来,赋值给变量 a, b, c, d
。但是如果数组或对象中的值又是一个数组或对象呢?我们可以使用嵌套的解构赋值来取出需要的值,例如:
let [a, [b, c]] = [1, [2, 3]]; let {x, y: [z, w]} = {x: 1, y: [2, 3]};
上面的代码分别将数组 [1, [2, 3]]
和对象 {x: 1, y: [2, 3]}
中嵌套的数组解构出来,赋值给变量 a, b, c, x, z, w
。
对象多层嵌套的取值问题
在实际开发中,我们经常会遇到对象多层嵌套的情况,例如:
-- -------------------- ---- ------- --- --- - - -- - -- - -- - -- - - - - --
如果我们想要取出对象 obj
中的值 1
,该怎么办呢?一种方法是使用点运算符,例如:
let value = obj.a.b.c.d;
但是如果对象嵌套层数很多,这种方法就会变得很麻烦。另一种方法是使用解构赋值嵌套,例如:
let {a: {b: {c: {d}}}} = obj;
这样就可以将对象 obj
中的值 1
解构出来,赋值给变量 d
。但是如果对象中某一层的值不存在,就会报错。例如:
let {a: {b: {c: {d}}}} = {};
上面的代码会报错,因为对象 {}
中没有属性 a
。为了避免这种情况,我们可以使用默认值,例如:
let {a: {b: {c: {d} = {}}}} = {};
这样如果对象中某一层的值不存在,就会将默认值 {}
赋给变量 d
。
总结
ES6 的解构赋值是一种方便快捷的语法,可以让我们更轻松地从数组或对象中取出需要的值。在对象多层嵌套的情况下,我们可以使用解构赋值嵌套来取出想要的值,但是需要注意对象中某一层的值不存在的情况,可以使用默认值来避免报错。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6516a06795b1f8cacdef5ac5