Javascript 复制具有字符串索引jquery的数组时出现问题

Javascript 复制具有字符串索引jquery的数组时出现问题,javascript,jquery,arrays,Javascript,Jquery,Arrays,我正在尝试使用jquery将包含字符串索引的数组ar复制到另一个数组arCopy。该数组如图所示。最初,我尝试复制数组,如: var arCopy = ar; 但当我尝试向arrayarCopy添加一个新值时,它也被插入到了ar中。因此,我尝试使用切片: var ar = []; ar['color'] = ['red', 'blue']; var arCopy = ar.slice(); ar['color'].push("kk"); arCopy['color'].push("kk");

我正在尝试使用jquery将包含字符串索引的数组
ar
复制到另一个数组
arCopy
。该数组如图所示。最初,我尝试复制数组,如:

var arCopy = ar;
但当我尝试向array
arCopy
添加一个新值时,它也被插入到了
ar
中。因此,我尝试使用
切片

var ar = [];
ar['color'] = ['red', 'blue'];
var arCopy = ar.slice();
ar['color'].push("kk");
arCopy['color'].push("kk");
console.log(ar); // outputs red,blue,kk,kk
但是
slice
也将值推送到原始数组
ar
。这是因为我正在使用带字符串索引的数组吗


有人能帮我修一下吗?提前感谢。

这就是您的代码所做的

var ar = []; //create empty Array "ar"
ar['color'] = ['red', 'blue']; //adding an array on 'color' parameter
var arCopy = ar.slice(); //cloning(copy) array "ar" on arCopy

arCopy = ar;//make arCopy and ar the same object (remember that Array inherits from object)
ar['color'].push("kk");//adding "kk" to ar (and arCopy because now is the same object)
arCopy['color'].push("kk");//adding "kk" to arCopy (and ar because now is the same object)
console.log(ar); // outputs red,blue,kk,kk
更新

可以将对象用作数组,但不能将数组用作对象,因此不能仅在数组上添加参数值

var ar = {}; 
ar.color = ['red', 'blue'];
var arCopy = JSON.parse(JSON.stringify(ar));
ar['color'].push("kk1");
arCopy['color'].push("kk2");
console.log(ar); // outputs {"color":["red","blue","kk1"]}
console.log(arCopy); // outputs {"color":["red","blue","kk2"]}
slice()定义:

slice()方法将数组中选定的元素作为新元素返回 数组对象

slice()方法选择从给定起点开始的元素 参数,并在给定的结束参数处结束,但不包括该结束参数


使用复制数组

arCopy = ar['color'].slice();

它会将在数组中创建的数组复制到相应的数组中

这是因为
arCopy
仍然是对原始
ar
var arCopy=ar的引用不是副本。这只是一项任务。arCopy和ar都将指向内存中的同一元素。不,
slice
工作。如果你所说的都是“不起作用”,我们就帮不了你。@GeorgeJempty
slice()
效果绝对不错,如果不知道具体情况,这个问题毫无价值。然而,我重新提出了这个问题,希望OP能用更多有用的信息更新它。@Jenz我把你的代码示例放在了一个可执行的代码段中。它不会输出
红色、蓝色、kk、kk
——但这是因为您没有以有效的方式使用数组。数组是不是混淆了?我删除了那行,但仍然slice()正在给空数组。好的,您使用数组对象作为对象,而这不是应该这样做的方法