复制具有字符串索引jquery的数组的问题

时间:2017-12-14 15:24:58

标签: javascript jquery arrays arraycopy

我正在尝试使用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。这是因为我正在使用带字符串索引的数组吗?

任何人都可以帮我解决这个问题吗?提前谢谢。

2 个答案:

答案 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();

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