问题标签 [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.
javascript - 迭代对象数组并更改每个对象中的一个属性
我发现自己经常遇到这种模式。我有一组从我的 api 返回的对象,我只需要操作所有对象中的一个属性。
有没有办法使用 ES6/Babel 或 Typescript 让该模式更具声明性?
寻找一些巧妙的解构技巧或类似的东西。
typescript - 如何使用扩展语法将 TypeScript 类型添加到解构参数?
忽略这是不好的add
功能这一事实。这是一个关于在 TypeScript 中使用带有扩展语法的数组解构的问题。
这就是我正在尝试的
但我不知道如何向其中添加 TypeScript 类型。我最好的猜测是做这样的事情(最直接的翻译)
这两个函数都可以工作,但是在 TypeScript 中,我失去了解构数组参数的能力,并且函数体被一堆丑陋的东西弄得像垃圾一样xs[0]
-xs.slice(1)
即使我将它们抽象成它们自己的函数,这也不是重点。
是否可以在 TypeScript 中向解构的展开参数添加类型?
到目前为止我尝试过的
这样的东西适用于固定数组
但当然我需要可变长度数组输入。我试过这个,但它没有编译
javascript - 将对象道具作为 JSX 属性而不是对象传递
给定以下组件。我正在寻找一种方法来获取这些道具、属性并将它们以这种格式传递给另一个组件。
例如,假设我<AdminHeader/>
这样包装:
然后我想调用<WrappedAdminHeader />
并传递adminHeader
道具,而不必将它们全部转换为JSON
:
而不必像这样将属性转换为 JSON:
这可能吗?
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'")
也不起作用。
javascript - 使用映射和过滤器扩展语法
我发现了这个有趣的问题,并想与大家分享。问题是 :
我很容易解决了过滤器的第一部分[0,1,(-1+1),(0+1),(1+1)] = [0,1,0,1,2]
。
我惊讶地发现 7 挂在最后。我认为这是一些错字,但将问题复制到控制台给了我 [1,1,2,7]。我不太明白两件事。
- 为什么 0 被排除在过滤器之外
- 7 在那里做什么
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
不触及对象其余部分的情况下将其更改为格式化数据?实际上有很多我想传递的变量,并且不认为将每个变量单独分配给一个新对象是最好的。
我该怎么办?任何帮助/提示表示赞赏!
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 我有
但是我得到了以下编译错误,我试图找出问题所在:
有任何想法吗?谢谢!
javascript - 传播语法不适用于节点 6.10
我在节点/浏览器上玩传播语法。
1) 使用 nodejs v6.10,
2) 铬 50
3)babel stage-0,它运行良好。
我只是在徘徊为什么它不能在节点 6.10 上运行,因为它对于传播操作都是绿色的。
javascript - 在名为exports的javascript es6中使用...展开语法
我正在尝试将库中的所有内容作为哈希导入,对其进行修改,然后重新导出修改后的哈希,而不知道库中的所有命名导出。例如:
我对https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/export的理解是规范不允许以下内容。有人可以确认吗?
显然,循环是不可能的,因为导出和导入语句必须是顶级的。
javascript - 为什么扩展元素不适合复制多维数组?
来自 mdn:传播语法
注意:通常 ES2015 中的扩展运算符在复制数组时会深一层。因此,它们不适合复制多维数组。这与 Object.assign() 和 Object spread 语法的情况相同。请查看下面的示例以获得更好的理解。
上述声明的意义何在?上面的代码示例与使用 .slice() 方法将 a 中的数组复制到 b 中的工作方式相同。我尝试在此处向数组添加另一个维度:https ://repl.it/HKOq/2并且事情仍然按预期工作。
那么为什么扩展语法不适合复制多维数组呢?
我会很感激任何帮助。
编辑:
阅读 estus 和 vol7ron 的答案帮助我解决了问题。基本上,正如 estus 在技术上指出的那样,数组中只有数组,而不是多维数组。
正如 vol7ron 解释的那样,仅复制数组的第一级,因此内存中的对象对于任何进一步的嵌套元素都保持不变。
我也错误地怀疑使用扩展语法的行为应该与切片运算符有任何不同