问题标签 [destructuring]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1034 浏览

javascript - 可以使用解构赋值来影响 CoffeeScript 中的投影吗?

我在理解 CoffeeScript 中的解构赋值时遇到了一些麻烦。该文档包含几个示例,这些示例似乎暗示在分配期间重命名对象可用于投影(即映射、翻译、转换)源对象。

我正在尝试投影a = [ { Id: 1, Name: 'Foo' }, { Id: 2, Name: 'Bar' } ]b = [ { x: 1 }, { x: 2 } ]. 我尝试了以下但没有成功;我显然误解了一些东西。谁能解释这是否可能?

我一去不复返的可怜尝试[ { x: 1 }, { x: 2 } ]

CoffeeScript 的并行赋值示例

我将这个示例理解为暗示可以重命名变量,在这种情况下用于执行交换。

CoffeeScript 的任意嵌套示例

我将这个示例理解为从任意对象定义属性的选择,其中包括将数组的元素分配给变量。

更新:使用 thejh 的解决方案来展平嵌套对象数组

0 投票
4 回答
1143 浏览

clojure - 为什么不破坏 def 形式?

在一种let形式(Clojure here)中,我可以做类似的事情

wheresvd返回一个长度为 3 的列表。这是一件很自然的事情,所以为什么我们没有

及其作为def表单默认行为的各种概括?我看不出这会如何干扰def已经在做的任何事情。了解 Lisp 或 Clojure 的 Zen 的人能否解释一下为什么def不支持强大的绑定(带解构)let

0 投票
2 回答
356 浏览

f# - 如何在 F# 中对解构进行抽象

我有一些我真的想摆脱的代码重复 -

如您所见,它是相同的算法重复 3 次。但是,我不知道如何概括需要传递像match expr with | destructureFn a -> Some a | _ -> None. 有人可以帮忙吗?实际上,我的代码中有 5 次重复(并且还在增长)需要分解。

干杯!

* 结论 *

使用 desco 的答案,我已经达到了这个重构 -

谢谢德斯科!

0 投票
2 回答
4790 浏览

clojure - 将变量列表单独传递给clojure函数

我一直在玩clojure,并决定制作一个结合了mapcat和list的高阶函数来模拟这种行为:

我的第一次尝试是定义 mapcatList 如下:

显然,该函数的行为不像我想要的那样,我认为这是因为这两个列表被放入一个列表并作为单个参数传递,而不是两个。我能够通过以下方式纠正这种情况,

此解决方案适用于两个列表,但我希望该函数使用可变数量的参数。

我的问题:如何将可变数量的参数传递给函数,然后解构它们,以便将它们作为单独的参数一起传递给“mapcat 列表”?

0 投票
4 回答
538 浏览

clojure - 地图重构

在 clojure 中,我可以像这样解构地图:

这类似于 CoffeeScript 的方法:

CoffeeScript 也可以这样做:

Clojure中有这样的快捷方式吗?

0 投票
1 回答
165 浏览

macros - “真的需要”解构宏参数吗?

我知道 LISP 宏参数中的解构是一件好事;我想知道它是否必不可少。举个例子,

似乎(大致)等效-除了检查参数的正确形式。

我的猜测是解构使代码更容易编写/理解,但是任何使用它的代码都可能被翻译成没有的代码。我是对的还是这是一个愚蠢的初学者的错误?

0 投票
1 回答
1145 浏览

javascript - 带块的常量声明

最近我正在研究 Firefox Add-on Builder SDK 源代码,并偶然发现了这样的常量声明:

我可以找到有关CommonJS Modules的信息,但是这个作业的剩余部分让我有点困惑,因为它必须是特定于语言的,我无法在谷歌上搜索任何内容。

有人可以向我指出一些解释这里发生了什么的规范/草案吗?

0 投票
1 回答
1615 浏览

javascript - 我在哪里可以获得有关 JavaScript 函数的对象参数语法的信息?

如果我想调用这样的函数:

通常我必须像这样表达我的函数定义:

但是这个很棒的语法在 spidermonkey 中用于定义函数是完全有效的:

这个功能是什么?

0 投票
1 回答
607 浏览

clojure - 从集合到有序集合

我遇到了某种与解构相关的心理障碍……

给出:

但是我如何从以下位置获得相同的排序集:

或从作为参数传递的集合(未排序)中:

我尝试了几次解构,我在想:

会起作用,但事实并非如此。

我想知道如何做到这一点,如果你能解释为什么我的推理方式是虚假的,那就更好了......

0 投票
1 回答
10188 浏览

clojure - 在保持原始值的情况下,解构 Clojure 函数的参数。

您可以解构函数参数但仍然可以使用原始参数吗?我现在这样做的方式只是let在函数体内使用一个表单,但我想知道是否有更简洁的方法。