我正在尝试复制一个javascript数组并修改'copy'而不修改原始变量,任何人都可以解释我做错了什么..
e.g
var array1 = [2, 5];
var array2 = '';
array2 = array1;
array2.pop();
console.log(array1);
console.log(array2);
// both output the same, however I want it to show array1 with 1 single item
我正在努力使array2
只包含数组中的一项& array1
将在数组中包含两个项目。我有什么想法吗?
答案 0 :(得分:2)
答案 1 :(得分:1)
使用slice()
复制数组。
var array1 = [2, 5];
var array2 = '';
array2 = array1.slice(0);
array2.pop();
console.log(array1);
console.log(array2);
slice不会改变原始数组,但会返回一个新的“一级” 深度“复制,包含从中切出的元素的副本 原始阵列。
答案 2 :(得分:0)
将行array2 = array1;
更改为:
array2 = array1.slice(0);
Slice方法将给定数组的(浅)副本从给定索引返回到(可选结束索引)
我希望这会有所帮助。
答案 3 :(得分:0)
就像使用切片功能一样简单:
var array1 = [2, 5];
var array2 = '';
array2 = array1.slice();
array2.pop();
console.log(array1);
console.log(array2);
在这里,您要告诉javascript获取array1中元素的副本,并将结果分配给array2。通过不设置开始和结束位置,它将切割整个数组。
答案 4 :(得分:0)
撰写本文时
array2 = array1 //It creates reference on array1 object
array2.pop() // removes 5 from both end
所以你必须通过slice()方法将一个数组克隆到另一个数组---
array2 = array1.slice(0) // cloning array1 's element to array2
array2.pop() // removes 5 from only array2 not from array1
现在可以正常使用