问题标签 [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 投票
0 回答
52 浏览

javascript - 如何手动高效地执行数组/对象解构?

数组解构非常有用:

看起来它是在 Javascript 1.7 中实现的,但随后被错误 1083498 删除。现在根据这张表,除了 Firefox 之外,任何浏览器都不支持它!:(

我希望我可以使用它,因为我不喜欢创建额外的不必要的变量。

解构:

没有解构:

有没有一种方法可以做到这一点,而无需创建额外的不需要inputArr并多次从中提取?

0 投票
2 回答
2402 浏览

ecmascript-6 - 解构数组、前 n 个元素和其余元素的优雅方式

我可以通过几种不同的方式解决这个问题,但我不确定是否有更优雅的方式来解决这个问题。

取一个数组

是否有一种使用数组解构的方法可以像thist一样工作:

我不知道会遇到问题。我觉得这应该可以通过解构来实现,但是我阅读它的方式我不知道该怎么做。

0 投票
2 回答
5029 浏览

javascript - 如何在 ES6 中进行对象重组?

有没有办法在一个语句中做到这一点?

我想在一个语句中转换{a:2, b:3}为。{b:3, c:2}

0 投票
2 回答
2733 浏览

javascript - ES6 结构化作业?

ES6的新解构赋值特性现在已经广为人知(Babel 的 REPL 上的live copy );对于已经存在的变量:

ES6中有简单的converse吗?基于同名变量在现有对象上设置属性?(除了明显的o.a = a; o.b = b;

注意我不是在谈论创建对象时,我们可以使用美妙的新对象初始化器语法来做到这一点,这样我们就不会不必要地重复名称:

但是如果我已经有一个对象,我可以在 ES6 中做某种结构赋值吗?

0 投票
1 回答
117 浏览

javascript - 有没有办法可以重组解构分配的一部分?

假设我有一个数组数组,如下所示:

我想使用 ES6 的解构赋值将每个数组的第一个元素作为一个单独的变量,并将其余元素重新打包为另一个数组。在伪代码中:

这样的事情可能吗?

0 投票
1 回答
706 浏览

clojure - Clojure 中的循环解构

有没有办法recur在循环中解构绑定?因此,例如,如果我想让y保持不变

我知道这是不可能的,但是我怎么能得到类似的_顺序解构recur呢?

0 投票
5 回答
14997 浏览

c++ - 如何在 C++ 中模拟解构?

在 JavaScript ES6 中,有一种称为解构的语言特性。它也存在于许多其他语言中。

在 JavaScript ES6 中,它看起来像这样:

我可以在 C++ 中做什么来获得类似的语法并模拟这种功能?

0 投票
2 回答
2072 浏览

typescript - TypeScript 解构别名导入?

我为我的应用程序使用命名空间/模块。我们将一个大型应用程序分解为几个较小的“模块”。它们都是一起编译的,所以我们随时都有所有参考资料。如果我需要x.y从模块访问模块,z我可以简单地使用x.y. 但是,我不想继续引用x. 无论如何我可以解构x为别名吗?例如(这不起作用,因此我的问题):

代替:

我可以做一些类似的事情来简化内部模块的导入别名吗?

0 投票
1 回答
993 浏览

typescript - TypeScript:多重解构和类型断言

我想知道在 TypeScript 中使用解构时如何断言多个变量的类型。

考虑:

const { OneTypeOfObject, AndAnother } = ProtoBuf.loadProtoFile('./ohYesProtobufs.proto').build('iAmANameSpace');

我怎么能断言它OneTypeOfObject有一个类型OneType并且AndAnother有一个类型OtherType

我可以让它们 any像这样:

const { OneTypeOfObject, AndAnother } = <any>ProtoBuf.loadProtoFile('./ohYesProtobufs.proto').build('iAmANameSpace');

我真正想做的是这样的:

const { <OneType>OneTypeOfObject, <OtherType>AndAnother } = ProtoBuf.loadProtoFile('./ohYesProtobufs.proto').build('iAmANameSpace');

显然有人想过这样的事情:

https://github.com/Microsoft/TypeScript/commit/7a74d9f8d021f50201765d2170af8d249af90320

但我无法根据我所看到的找到答案......

更新

我尝试了大卫的两种方法,但都没有奏效。这是用于方法 2 的代码:

它导致了这个错误:

类型“ProtoBuf”不可分配给类型“{ OneTypeOfObject: OneType; AndAnother:其他类型;}'。“ProtoBuf”类型中缺少属性“OneTypeOfObject”。

0 投票
2 回答
222 浏览

clojure - 所有键的clojure相同的“:或”值

我已经定义了一个包含一堆字段的记录——其中一些是计算出来的,其中一些不直接映射到我正在摄取的 JSON 数据中的键。我正在为它编写一个工厂函数,但我希望有合理的默认/未找到值。有没有更好的方法来应对:or [field1 "" field2 "" field3 "" field4 ""...]?我可以写一个宏,但如果我不需要,我宁愿不写。