问题标签 [spread-syntax]

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 投票
5 回答
14384 浏览

javascript - 迭代对象数组并更改每个对象中的一个属性

我发现自己经常遇到这种模式。我有一组从我的 api 返回的对象,我只需要操作所有对象中的一个属性。

有没有办法使用 ES6/Babel 或 Typescript 让该模式更具声明性?

寻找一些巧妙的解构技巧或类似的东西。

0 投票
1 回答
3033 浏览

typescript - 如何使用扩展语法将 TypeScript 类型添加到解构参数?

忽略这是不好的add功能这一事实。这是一个关于在 TypeScript 中使用带有扩展语法的数组解构的问题。

这就是我正在尝试的

但我不知道如何向其中添加 TypeScript 类型。我最好的猜测是做这样的事情(最直接的翻译)

这两个函数都可以工作,但是在 TypeScript 中,我失去了解构数组参数的能力,并且函数体被一堆丑陋的东西弄得像垃圾一样xs[0]-xs.slice(1)即使我将它们抽象成它们自己的函数,这也不是重点。

是否可以在 TypeScript 中向解构的展开参数添加类型?


到目前为止我尝试过的

这样的东西适用于固定数组

但当然我需要可变长度数组输入。我试过这个,但它没有编译

0 投票
2 回答
170 浏览

javascript - 将对象道具作为 JSX 属性而不是对象传递

给定以下组件。我正在寻找一种方法来获取这些道具、属性并将它们以这种格式传递给另一个组件。

例如,假设我<AdminHeader/>这样包装:

然后我想调用<WrappedAdminHeader />并传递adminHeader道具,而不必将它们全部转换为JSON

而不必像这样将属性转换为 JSON:

这可能吗?

0 投票
1 回答
38 浏览

javascript - 如何使用扩展语法将数组传递给 JavaScript 中的方法

我正在尝试将数组传递给方法,但引号有问题。这是一个类似于我想要实现的案例。

问题是结果是foo.classList.remove('blue, round, tall')行不通的。我正在努力实现这一目标foo.classList.remove('blue', 'round', 'tall')

我尝试过使用remove.map(el => `'${el}'`).join(','),但结果foo.classList.remove("'blue', 'round', 'tall'")也不起作用。

0 投票
4 回答
6260 浏览

javascript - 使用映射和过滤器扩展语法

我发现了这个有趣的问题,并想与大家分享。问题是 :

我很容易解决了过滤器的第一部分[0,1,(-1+1),(0+1),(1+1)] = [0,1,0,1,2]

我惊讶地发现 7 挂在最后。我认为这是一些错字,但将问题复制到控制台给了我 [1,1,2,7]。我不太明白两件事。

  • 为什么 0 被排除在过滤器之外
  • 7 在那里做什么
0 投票
1 回答
380 浏览

javascript - 重新格式化地图值并使用扩展语法进行更新

我正在尝试格式化数组中的对象属性。我遇到了一些麻烦,因为以下代码会引发以下错误,但反应原生会引发 TypeError: In this environment the sources for assign MUST be an object.This error is a performance optimization and not spec compliant. <<< path/to/project/node_modules/react-native/packager/src/Resolver/polyfills/polyfills.js

我如何在event.date不触及对象其余部分的情况下将其更改为格式化数据?实际上有很多我想传递的变量,并且不认为将每个变量单独分配给一个新对象是最好的。

我该怎么办?任何帮助/提示表示赞赏!

0 投票
1 回答
787 浏览

javascript - 我可以在 angular + ngrx 中使用对象扩展语法吗?

我正在从这里阅读有关对象传播语法的信息,并尝试在我的项目中使用它,我的设置如下:

  • 角度 2
  • 角度/cli 1.0.0-rc.0
  • ngrx/核心 1.2.0
  • ngrx/商店 2.2.1
  • rxjs 5.1.0
  • 打字稿 2.0.10

在我的 reducer.ts 我有

但是我得到了以下编译错误,我试图找出问题所在:

有任何想法吗?谢谢!

0 投票
1 回答
816 浏览

javascript - 传播语法不适用于节点 6.10

我在节点/浏览器上玩传播语法。

1) 使用 nodejs v6.10,

2) 铬 50

3)babel stage-0,它运行良好。

我只是在徘徊为什么它不能在节点 6.10 上运行,因为它对于传播操作都是绿色的。

http://node.green/

0 投票
1 回答
12232 浏览

javascript - 在名为exports的javascript es6中使用...展开语法

我正在尝试将库中的所有内容作为哈希导入,对其进行修改,然后重新导出修改后的哈希,而不知道库中的所有命名导出。例如:

我对https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/export的理解是规范不允许以下内容。有人可以确认吗?

显然,循环是不可能的,因为导出和导入语句必须是顶级的。

0 投票
4 回答
5900 浏览

javascript - 为什么扩展元素不适合复制多维数组?

来自 mdn:传播语法

注意:通常 ES2015 中的扩展运算符在复制数组时会深一层。因此,它们不适合复制多维数组。这与 Object.assign() 和 Object spread 语法的情况相同。请查看下面的示例以获得更好的理解。

上述声明的意义何在?上面的代码示例与使用 .slice() 方法将 a 中的数组复制到 b 中的工作方式相同。我尝试在此处向数组添加另一个维度:https ://repl.it/HKOq/2并且事情仍然按预期工作。

那么为什么扩展语法不适合复制多维数组呢?

我会很感激任何帮助。

编辑:

阅读 estus 和 vol7ron 的答案帮助我解决了问题。基本上,正如 estus 在技术上指出的那样,数组中只有数组,而不是多维数组。

正如 vol7ron 解释的那样,仅复制数组的第一级,因此内存中的对象对于任何进一步的嵌套元素都保持不变。

我也错误地怀疑使用扩展语法的行为应该与切片运算符有任何不同