什么是解构赋值及其用途?

IT技术 javascript ecmascript-6 destructuring object-destructuring
2021-01-09 01:50:34

我一直在阅读ES6 中引入的解构赋值

这种语法的目的是什么,为什么引入它,以及在实践中如何使用它的一些示例?

3个回答

什么是解构赋值?

解构赋值语法是JavaScript表达式,使得它可以从阵列解压缩的值,或从属性的对象,为不同的变量。

- MDN

好处

A.使代码简洁且更具可读性。

B.我们可以很容易地避免重复破坏表达式。

一些用例

1.从对象,数组中获取变量中的值

2. 将任意位置的阵列与另一个阵列组合。

3. 仅更改对象中所需的属性

4. 创建对象的浅拷贝

5. 从参数中提取值到独立变量中

6.从对象中获取动态键值

7. 用一些默认值从其他对象构建一个对象

8. 交换value

9. 获取对象的子集

10. 做数组到对象的转换:

11.在功能中设置默认值。(阅读此答案以获取更多信息)

12.length从数组中获取属性,函数名称,参数数量等。

@NeilGuyLindberg 看看上面答案中的第一个代码片段,您可以像这样替换键的名称,即 const {name: newName} = {name: 'some value'}
2021-03-20 01:50:34
谢谢@code-maniac。我看到我正在逆转操作。我只需要翻转,所以我有: {WeirdNameKey: name},现在代码读起来很好。
2021-03-29 01:50:34
我想在解构时更改键名。我有一个来自某些 API 的对象,并且这些键在可读代码中没有意义,所以我需要使用它们并使其更好/可读: {message: {WeirdNameKey: 'Neil', MakesNoSense: 'Foo'}}// 通缉:const {name: WeirdNameKey, system: MakesNoSense} = message;我可以发誓我已经这样做了,只是为了清理用。但是,它对我不起作用。我只想提取和重新键入。我可以发誓我以前做过这件事。有可能吗?
2021-04-05 01:50:34

它类似于您可以使用相同的变量名称提取的内容

解构赋值是一个 JavaScript 表达式,它可以将数组中的值或对象中的属性解包为不同的变量。让我们使用解构赋值从数组中获取月份值

var [one, two, three] = ['orange', 'mango', 'banana'];

console.log(one); // "orange"
console.log(two); // "mango"
console.log(three); // "banana"

并且您可以使用解构赋值获取对象的用户属性,

var {name, age} = {name: 'John', age: 32};

console.log(name); // John
console.log(age); // 32

Javascript 的 De-structured assignment 可能是从 Perl 语言中汲取的灵感。

这通过避免编写 getter 方法或包装函数来促进重用。

我发现一个特别有用的最佳示例是重用返回比所需数据更多的数据的函数。

如果有一个函数返回列表或数组或json,而我们只对列表或数组或json的第一项感兴趣,那么我们可以简单地使用解构赋值而不是编写新的包装函数提取有趣的数据项。