javascript 二维(多维)数组的复制问题
最近在项目中遇到一个动画暂停的效果,需要在动画停止的时候检测当前坐标和已经运行的时间,从而调节时间轴为再次运行时加速。 但是在数组保存方面折腾了半天。
var orbitArray = [], lineArray = []; orbitArray = lineArray; //错误方式,javascript中数组为引用类型(类似传址方式) orbitArray = lineArray.concat(); //错误方式二,这样复制数组貌似没问题了,但其实该方式仅能复制第一层数组,而我们用到的是一个二维的数组。 orbitArray = $.extend(true, [], lineArray); //二维数组复制,jquery的一种复制方式,比较方便,当然大家也可以自己写一个原生JS的多维数组复制方式,这里不再啰嗦 for (var i = lineArray.length - 1; i >= 0; i--) { orbitArray[i][3] = lineArray[i][3]/rate; }; console.log(lineArray);