NodeJS中的高效深度复制

Efficient Deep copy in NodeJS

本文关键字:深度 复制 高效 NodeJS      更新时间:2023-09-26

我想在 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"