簡體   English   中英

如何在不更改接收新值的數組的 memory 地址的情況下將一個數組中的值加載到另一個數組中?

[英]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 地址/引用。

您可以在不更改ab的引用的情況下推送這些值。

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM