[英]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.