发布于 2026-01-05 2 阅读
0

解构赋值、对象解构、数组解构的三个强大示例,以及别名的结合使用!

3 个有效解构作业的例子

对象解构

数组解构

一起行动,并使用别名!

权力

ECMAScript 不断添加新功能,使我们的代码更加强大。我甚至发起了一个关于大家最喜欢哪些功能的讨论。

我在文档中列出了我的操作是解构赋值。你可以在Mozilla 文档中了解更多信息

那么,事不宜迟,下面就让我们来看一些这种语法的实际应用示例吧!

对象解构

假设我们有一个想要操作的对象,它看起来像这样:

{
  data: {
    item: "this thing"
  }
}
Enter fullscreen mode Exit fullscreen mode

如果把它传递给一个函数并进行访问,item那就有点混乱了。

(result) => {
   result.data.item
}
Enter fullscreen mode Exit fullscreen mode

通过解构赋值,我们可以把它变成这样!

({data}) => {
   data.item
}
Enter fullscreen mode Exit fullscreen mode

模块的导入和导出经常用到这个概念。

数组解构

如果我们用数组代替呢?

[
  {
    item: "this thing"
  },
  {
    num: 200
  }
]
Enter fullscreen mode Exit fullscreen mode

不进行结构化赋值就访问它是不太理想的做法。

(result) => {
   result[0].item
}
Enter fullscreen mode Exit fullscreen mode

但看看 ES2015+ 的强大之处吧!

([data, status]) => {
   data.item
}
Enter fullscreen mode Exit fullscreen mode

一起行动,并使用别名!

Promise.all前几天在使用的时候,我偶然发现了一个解构赋值的绝佳用例。如果你不熟悉的话,解构Promise.all赋值可以解析多个 Promise 对象,并将结果放入一个数组中。类似这样:

[result1, result2]
Enter fullscreen mode Exit fullscreen mode

现在,想想一个典型的 Promise 响应(尤其是如果是 HTTP 请求),这两个结果可能看起来都与此类似。

{
  data: {
    item: "this thing"
  }
}
Enter fullscreen mode Exit fullscreen mode

我们可以将之前的两个例子结合起来,使访问每个响应对象中的内容变得更加简洁。

Promise.all([
            promise1,
            promise2,
        ]).then(([{ data: result1 }, { data: result2 }]) => {
            result1.item
        });
Enter fullscreen mode Exit fullscreen mode

现在,这里发生了很多事情。

  • 我们使用数组解构来单独访问数组中的每个元素。
  • 然后,我们对这些数组元素使用对象解构。

但事情还有转折。这是什么?

{data: result1}
Enter fullscreen mode Exit fullscreen mode

这是将一个变量名赋值给数据对象。我们不想使用 ` in` data,因为我们还要访问名为 ` datain`的对象result2。请注意,我们要访问的对象在前,名称在后。以下代码将无法正常工作。

Promise.all([
            promise1,
            promise2,
        ]).then(([{ result1: data }, { result2: data }]) => {
            result1.item
        });
Enter fullscreen mode Exit fullscreen mode

变量名必须唯一(这很正常)。而且在这个例子中,同一个变量名data被用了两次。

权力

瞧,这就是解构赋值带来的效果。看看我们的代码可以变得多么简洁!

文章来源:https://dev.to/laurieontech/3-powerful-examples-of-destructuring-assignment-jlf