我在我的javascript代码中有一个地方需要执行如下操作:
将一个数组的指定范围复制到另一个数组的指定范围。
这个操作类似于
1)Java中的System.arraycopy ->
System.arraycopy(array1, index1, array2, index3, index4 - index4 + 1);
2) Go 中的 copy 方法:
copy(array2[index3:index4 + 1], array1[index1:index2+1])
3) Python 中的切片操作:
array2[index3: index4 + 1] = arr[index1: index2+1]
目前我是手动迭代并执行此操作。
但是我没有在JavaScript中找到任何工具函数来执行此操作。真的有这样的吗?
更新1:它应该精确地复制,而不添加或删除任何两个给定数组中的元素。
它应该像这个实现一样运行:
function arraycopy(src, srcPos, dst, dstPos, length) {
let j = dstPos;
let tempArr = src.slice(srcPos, srcPos + length);
for (let e in tempArr) {
dst[j] = tempArr[e];
j++;
}
};
更新2:(请小心查看下面的一些答案,看看它是否适用于您的用例(例如在大型数据集的情况下))许多下面的答案使用splice的方式会破坏它,如果源数组的范围从开始到结尾很大。它将抛出“RangeError:Maximum call stack size exceeded”……因为它将超过函数允许的最大参数数量。 (在这里尝试演示脚本)"
.splice
和.slice
来拼接切片。 - Aluan Haddadconcat()
来解决RangeError
问题,并返回一个新的数组,其中输入数组不会被改变。 - Tim Klein