2016-02-10 100 views
0

我有兩個數組,我想將一些值從一個複製到另一個,特別是這些值的索引大於第一個數組的長度。複製數組長度的整數值

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將initalized,然後將該長度值將不會被如此重新即使長度變化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]); 
} 

我的問題是最終 - 我如何從一個數組的當前長度複製值,並將其存儲在獨立的變量不會改變?

+3

分配的原始值,使值的副本,而不是引用。所以你不必做任何事情。 – nnnnnn

+0

你的第一個例子本身工作正常.. –

+3

你爲什麼不用'concat'和'slice'來實現你的目標?你可以用'arr1.concat(arr2.slice(arr1.length));' – Georg

回答

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

*'代替循環 - 我的問題最終是 - 我怎樣才能從數組的當前長度複製值並將其存儲在單獨的變量中, t變化?「* – nnnnnn

+0

即使arr1的長度在此步驟後發生變化,並且除非'長度'值被重新分配,var length = arr1.length也不會改變。 例如 VAR ARR1 = [1,2,3] 變種LEN = arr1.length 的console.log(LEN)//將打印3 arr1.push(4) 的console.log(LEN)//仍將打印3 –

-1

我會做出西莫恩德雷的ANS一些變化

var l1 = arr1.length, l2 = arr2.length 

if (l1 < l2) { 
    arr1 = arr1.concat(arr2.slice(l1)) 
} else { 
    arr2 = arr2.concat(arr1.slice(l2)) 
}