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"