我正在制作一个有2个阵列的游戏,但是当我不想要它时,一个阵列会发生变化.浏览器中控制台的示例:
A=[1,2,3,4,5]
B=[6,7,8,9,10]
A=B
A.push(11)
A =[6, 7, 8, 9, 10, 11]
B =[6, 7, 8, 9, 10, 11]
Run Code Online (Sandbox Code Playgroud)
A很好但是有办法让B留下来 [6,7,8,9,10]
使用扩展语法A=[...B];复制B到A.当你这样做A=B,你实际上是设定的基准B,以A使任何变化A导致的变化B,反之亦然.
var A=[1,2,3,4,5];
var B=[6,7,8,9,10];
A=[...B];
A.push(11);
console.log(A);
console.log(B);Run Code Online (Sandbox Code Playgroud)
当你这样做
A=B
Run Code Online (Sandbox Code Playgroud)
你让A指同一个阵列是B指向.因此,无论您使用哪个变量来查看它们所引用的数组,您都会看到对该数组所做的任何更改.
A很好但是有办法让B留下[6,7,8,9,10]
这听起来像你想复制的内容B来A.为此,您可以使用slice:
A = B.slice();
Run Code Online (Sandbox Code Playgroud)
或者,在现代环境中,您可以像Ankit所指出的那样使用ES2015的扩展符号.
A因为你从不使用它,所以最初不需要分配任何东西.
例:
var A;
var B = [6,7,8,9,10];
A = B.slice();
A.push(11)
console.log(A); // [6, 7, 8, 9, 10, 11]
console.log(B); // [6, 7, 8, 9, 10]Run Code Online (Sandbox Code Playgroud)
.as-console-wrapper {
max-height: 100% !important;
}Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
99 次 |
| 最近记录: |