1
3
|
2
0
复制数组最简单的方法之一是
但这只会创建数组的副本,而不是内部的非基元值的副本,因此字符串或数字将被复制,而数组的两个副本中的对象将是相同的。 像这样使用它:
|
3
0
不是你想的那样。。。
不创建数组的副本,只创建对同一数组的两个引用-
您需要做的是创建一个具有相同内容的新数组。因此,更改一个值只会在数组中更改它。 Array.prototype.slice 是你想要的。
|
4
0
这是因为JavaScript处理内存的方式。 对于基本类型(boolean、null、undefined、number、string、symbol),如果将包含这些类型之一的变量分配给新变量,JavaScript将传递变量的值(按值传递)。值将被复制。 对于复杂的对象(数组是),Javascript将引用传递到内存中的值(按引用传递)。实际值可以由多个引用指向,并且在技术上是共享的。如果将包含对象类型的变量分配给新变量,则只复制对内存中该位置的引用。 JavaScript这样做是为了提高内存效率,但它会导致您描述的行为。如果更改对象,则指向该对象的所有变量都将看到相同的效果。
你不想做的是克隆这个对象,让它在内存中有自己的位置。根据您的用例,有很多克隆方法。 internet上到处都是描述用例和解决方案的文章,例如,请参见: https://davidwalsh.name/javascript-clone-array |
5
0
对于blink browsers,slice是复制数组的最快方法。 但是对于非闪烁浏览器,您可以使用while循环或in循环。 使用切片方法:
另外,在ES6中复制数组的最简单方法之一是使用数组扩展。
**这些方法正在复制数组,但如果数组由对象组成,则它们仍被引用,并将随着原始对象的更改而更改。 |
Softly · 单选按钮未按预期取值 1 年前 |
SlickRed · 我无法使用JS关注HTML元素 1 年前 |
assembler · Nextjs没有处理发布请求 1 年前 |
BADRUM · 执行两个获取功能后,如何导航回页面? 1 年前 |
Toniq · javascript为php保存多维数组 1 年前 |