NodeJS中的高效深度复制

我想深入复制NodeJS中的整数数组。 我尝试的第一种方法是

obj2 = JSON.parse(JSON.stringify(obj1)); 

然而,它是如此之慢,因为它是一个很大的arrays。

现在我正在使用

 var l = obj1.length; while (l--){ obj2.push(obj1[l]); } 

虽然速度更快,但我想知道是否有更好的解决scheme? 谢谢你们!

如果它是一个数组,你试试

 var arr2 = arr1.slice(0); 

它确实创build了一个浅拷贝,但是对于只包含原始整数的数组而言,它应该没有关系。

你也可以使它像

 var arr = [1,2,3,4,5,6,7,8], brr = arr.map(e => e); 

如果你的数组只包含数字(如果你的数组包含数组,它不会工作),你可以使用不带参数的Array.prototype.slice函数

 var arr1 = [1, 2, 3, 4, 5]; var arr2 = arr1.slice(); 

如果你需要得到一个有序的数组,并将信息保存在原始数组元素的位置上:

0)原始数组:

 var obj1 = [1, 2, 3, 100, 5, 0, 200, 30]; 

1)保持原来的位置:

 var index = Object.keys( obj1 ).sort( function(a, b) { return obj1[a] - obj1[b]; }); // >> ["5", "0", "1", "2", "4", "7", "3", "6"] 

2)获取一个sorting的数组:

 var obj2 = obj1.sort( function(a, b) { return ab; }); // >> [0, 1, 2, 3, 5, 30, 100, 200] 

3)find具有新索引“0”的元素的原始位置:

 var originalIndex = index[0]; // >> "5" 
Interesting Posts