我正在尝试使用jquery将包含字符串索引的数组ar
复制到另一个数组arCopy
。该数组看起来像here。最初我尝试复制像:
var arCopy = ar;
但是当我尝试向数组arCopy
添加新值时,它也会插入到ar
中。所以我尝试了slice
:
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
。这是因为我正在使用带字符串索引的数组吗?
任何人都可以帮我解决这个问题吗?提前谢谢。
答案 0 :(得分:0)
这是你的代码所做的事情
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()方法返回数组中的选定元素,作为new 数组对象。
slice()方法选择从给定开始处开始的元素 参数,结束于但不包括给定的结束参数。
答案 1 :(得分:0)
使用
复制数组arCopy = ar['color'].slice();
它会将在数组中创建的数组复制到相应的数组