Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/474.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
变量javascript的快照_Javascript - Fatal编程技术网

变量javascript的快照

变量javascript的快照,javascript,Javascript,我试图保留某个变量的记录数组,但每当我推送该变量时,它不会推送该变量的实例,而是推送该变量本身 var array = [0,0,0]; var record = []; record.push(array); for(var i=0;i<array.length;i++) { array[i]++; } record.push(array); console.log(record); //I need record to be [[0,0,0],[1,1,1]], but it

我试图保留某个变量的记录数组,但每当我推送该变量时,它不会推送该变量的实例,而是推送该变量本身

var array = [0,0,0];
var record = [];

record.push(array);
for(var i=0;i<array.length;i++) {
    array[i]++;
}
record.push(array);
console.log(record);
//I need record to be [[0,0,0],[1,1,1]], but it gives two copies of the latter
var数组=[0,0,0];
var记录=[];
记录。推送(数组);
对于(var i=0;i您可以在数组上使用“slice”(第一个参数为可选的“0”),以获得它的克隆:

var array = [0,0,0];
var record = [];

record.push(array.slice(0));

for(var i=0;i<array.length;i++) {
    array[i]++;
}

record.push(array.slice(0));

console.log(record);
// record is: [[0, 0, 0], [1, 1, 1]]
var数组=[0,0,0];
var记录=[];
record.push(array.slice(0));

对于(var i=0;i,您可以使用内置函数来执行此操作:

var record = array.slice(0);
ref:

克隆阵列
Array.slice
是一个更昂贵的操作()。
相反,您可以这样做:

const array = [0,0,0];
const record = [Object.values(array)];

for(var i = 0; i < array.length; i++) {
    array[i]++;
}

record.push(array);

console.log(record);

您需要将数组复制到一个新的临时数组中。它不是推送变量,而是推送变量引用的数组。您只在代码中创建了两个数组,其中一个是
record
。如果希望每一行记录都是另一个数组,则需要为每一行创建一个数组。您可以通过复制
arr来实现这一点ay
(例如使用
数组.slice(0)
),或者在循环中使用另一个数组文本,然后用正确的值填充它。谢谢,slice函数似乎正在工作。只需
.slice()
就可以了(这是最常见的用法),不需要
.slice(0)
1) [...arr]
2) [].concat(arr);
3) arr.slice();
4) arr.map(i => i);
5) Array.of(...arr);
6) Object.values(arr);
7) Object.assign([], arr);
8) JSON.parse(JSON.stringify(arr));
etc...