问题标签 [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 - Clone Object with arrays using spread operator
How would one go about cloning an object that has arrays in it with the new spread operator?
Example Object:
I want a new object with the arrays in it. In that new object I want to be able to change or add to an array without it referencing and effecting vehicles object.
javascript - 如何使用扩展语法从 JSON 文件创建变量?
命名为 Json 的对象
调用 json 对象在同一个文件中工作。
现在我要做的是创建与 JSON 对象的键同名的变量。所以
可以立即分配变量
但是,如果我在 JSON 文件中有数千个项目怎么办。如何以编程方式创建这些变量?和/或有更好的方法来管理这个吗?
javascript - 向对象数组中的所有对象插入一个新的键值对而不循环
我有一个对象数组,其中包含具有相似结构的对象。我需要为数组中的所有对象添加一个新的键值对。如何在不循环整个数组的情况下做到这一点。
提供我需要的输出示例,
所需的输出将是,
PS:尝试使用传播运算符很少或没有成功。
javascript - 未定义的 Javascript ES6 扩展运算符
在开发我的 react 应用程序时,我需要向组件发送一个条件 prop,因此我在某个地方找到了这样做的模式,尽管这对我来说似乎很奇怪,我无法理解它是如何以及为什么工作的。
如果我输入:
当在 undefined 上激活扩展运算符时,会引发错误,尽管当 undefined 在对象内部时,会返回一个空对象。
我对这种行为感到非常惊讶,这真的是应该的吗,我可以依靠这个吗?这是一个好习惯吗?
javascript - 使用对象文字语法创建对象时,JavaScript 是否维护对现有变量的引用?
这是一个关于 JavaScript 如何添加对现有的引用而不是创建新的引用的问题。
在 Redux reducer 的上下文中,这里有一些示例希望足以说明问题,因为它是spread operator
or的熟悉位置Object.assign()
:
看到这里我们只是返回一个带有字符串的对象文字,所以没有什么可以拖入对其他地方存在的东西的引用。
这是一个可疑的问题:
我们正在返回一个对象字面量,但我们包含了对
args[type]
. 首先,我需要确定的是,这是否会返回一个对象,该对象维护args[type]
与当前设置的任何内容的链接?如果args[type]
之后发生变异,这会反映在这个返回的对象中吗?
这是我怀疑不会有这个问题的两个例子:
我理解正确吗?JavaScript 是否只复制属性而不维护任何对
args[type]
?
这是我最近学到的另一个示例,它可能在语法上与语法相同Object.assign()
:
问题:
扩展运算符是否与在此上下文中执行完全相同的操作
Object.assign()
并创建一个全新的对象,而不会因维护对 的引用而产生非法可变性的风险args[type]
?在创建对象后,我需要能够依赖对象的不可变状态。我展示的第二个示例会保持对 的实时引用
args[type]
吗?
我有一些通常会在某些东西中传播的代码,并且我有一个省略了传播的用例,所以我很好奇这是否会成为问题。我如何保证随机更改args[type]
不会影响这个返回的对象?
这会是正确的答案吗?:
[编辑]我可以通过这样做来重现这个问题:
这修复了它(所以它似乎与原语与维护对象引用有关):
更新的问题
有没有办法复制一个non-primitive
(即:对象/数组)以破坏这个引用?
我注意到它不适用于Object.assign()
javascript - 从 JS 中的不可变数组中删除元素的最干净的方法是什么?
我需要从作为组件状态的数组中删除一个元素React
。这意味着它是一个不可变的对象。
使用扩展语法添加元素很容易。
删除有点棘手。我需要使用一个中间对象。
它使代码更加肮脏且难以理解。
创建一个从中删除元素的新数组是否更容易或更容易?
javascript - 在数组与对象中传播未定义
为什么在对象中传播未定义会返回一个空对象?{...undefined} // equals {}
:
为什么在数组中传播未定义会给你一个错误?
[...undefined] // type error
:
javascript - 在声明 es2018 期间内联扩展运算符
我想做这样的事情:
显然它不起作用,当然,我可以设置另一个 const,然后使用它,但我很懒)所以我很好奇 javascript 是否允许你这样做?
javascript - 将对象传递给 GSAP。旋转和传播语法冲突?
将对象传递给 GSAP 动画有一个非常奇怪的问题。在使用名为“clone”的变量时,每个参数都在起作用,而不是“rotation”,但是当我使用“clone2”时,旋转也在起作用:
该代码的 console.log 输出是:
所以你可以通过这个例子看到情况真的很奇怪。难道我做错了什么?GSAP 有类似的问题吗?
请寻求帮助 - 我将非常感激。
javascript - 如何使用扩展语法 es6 进行简化
如何简化代码,我尝试生成对象并为每个更改方法调用并依赖于参数(newValues)我更改了一些字段,似乎我有重复的代码,如何避免这种情况?我是否应该使用一些更困难的方法来避免使用扩展语法