NodeJS 中的高效深拷贝
Efficient Deep copy in NodeJS
我想在 NodeJS 中深度复制一个整数数组。
我尝试的第一种方法是
obj2 = JSON.parse(JSON.stringify(obj1));
但是,因为它是一个大数组,所以很慢。
现在我在用
var l = obj1.length;
while (l--){
obj2.push(obj1[l]);
}
虽然快了很多,但请问有没有更好的解决办法?
谢谢大家!
如果是数组,你试过了吗
var arr2 = arr1.slice(0);
它确实创建了一个浅表副本,但对于只包含原始整数的数组来说,这无关紧要。
你也可以这样
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) 获取排序数组:
var obj2 = obj1.sort( function(a, b) {
return a-b;
});
// >> [0, 1, 2, 3, 5, 30, 100, 200]
3) 找到新索引'0'的元素的原始位置:
var originalIndex = index[0];
// >> "5"
我想在 NodeJS 中深度复制一个整数数组。 我尝试的第一种方法是
obj2 = JSON.parse(JSON.stringify(obj1));
但是,因为它是一个大数组,所以很慢。
现在我在用
var l = obj1.length;
while (l--){
obj2.push(obj1[l]);
}
虽然快了很多,但请问有没有更好的解决办法? 谢谢大家!
如果是数组,你试过了吗
var arr2 = arr1.slice(0);
它确实创建了一个浅表副本,但对于只包含原始整数的数组来说,这无关紧要。
你也可以这样
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) 获取排序数组:
var obj2 = obj1.sort( function(a, b) {
return a-b;
});
// >> [0, 1, 2, 3, 5, 30, 100, 200]
3) 找到新索引'0'的元素的原始位置:
var originalIndex = index[0];
// >> "5"