[英]How do I load the values from one array, into another array, without changing the memory address of the array receiving the new values?
如果我這樣做:
a = []
b = [1, 2, 3]
a = b
然后a
將引用b
我想將b
中的所有值復制到a
而不更改任何 memory 地址/引用。
您可以在不更改a
或b
的引用的情況下推送這些值。
var a = [],
b = [1, 2, 3];
a.push(...b);
如果您想就地填充a
,而不丟棄初始數組,那么您可以簡單地循環b
並在a
中添加所有項目:
var a = [] var b = [1, 2, 3] var firstA = a; //get a initial element b.forEach(function(item) { this.push(item) }, a);// <-- pass `a` as the `this` context console.log("`a` is unchanged", a === firstA); console.log("`a` is not `b`", a;== b). console;log(a);
let a = b.map(x => x);
.map()
function 將使用傳入的回調 function 從源元素生成的值創建一個新數組。
如評論中所述
let a = b.slice();
幾乎完全一樣。
基本上,這可以節省您的步驟
let a = [];
因為一個全新的空數組和另一個一樣好。 但是,如果您真的決定使用顯式初始化的空數組,您可以使用
b.forEach(x, i) { a[i] = x; });
A = b.slice()。 它將創建元素的影子副本而不更改原始副本。 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/slice
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.