我有两个数组,我想将一些值从一个复制到另一个,特别是那些索引中的值大于第一个数组的长度。
var arr1 = [1,2,3];
var arr2= [1,2,3,4,5,6,7];
如果我这样做:
var length = arr1.length;
for(var i = length; i < arr2.length; i++){
arr1.push(arr2[i]);
}
我认为i
将被初始化,然后永远不会重新访问该长度值,所以即使长度随着arr1的变化而变化,这也不重要。
但我的问题是,为了减轻任何潜在的错误,我可以将arr1.length的值复制到一个新变量中。
所以我可以这样做:
var length = JSON.parse(JSON.stringify(arr1.length));
for(var i = length; i < arr2.length; i++){
arr1.push(arr2[i]);
}
或者更简单:
var length = Number(arr1.length);
for(var i = length; i < arr2.length; i++){
arr1.push(arr2[i]);
}
我的问题最终是 - 如何从数组的当前长度复制值并将其存储在不会发生变化的单独变量中?
答案 0 :(得分:0)
最简单的方法是使用array.slice
:
var arr1 = [1,2,3];
var arr2= [1,2,3,4,5,6,7];
console.log(arr2.slice(arr1.length)); // [4, 5, 6, 7]
答案 1 :(得分:-1)
我会对Simo Endre的ans进行一些修改
var l1 = arr1.length, l2 = arr2.length
if (l1 < l2) {
arr1 = arr1.concat(arr2.slice(l1))
} else {
arr2 = arr2.concat(arr1.slice(l2))
}