Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.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_Arrays_Reference - Fatal编程技术网

在JavaScript中删除数组内容时绕过引用

在JavaScript中删除数组内容时绕过引用,javascript,arrays,reference,Javascript,Arrays,Reference,我正在实现一个简单的日志机制,将数组作为日志条目存储在单个数组中。 代码的工作原理如下: var myarr = new Array(); var secondarr = new Array(4,5,6); myarr.push(secondarr); secondarr.length=0; secondarr.push(5,5,5); myarr.push(secondarr); secondarr.length=0; //check for(var i = 0; i < myarr.

我正在实现一个简单的日志机制,将数组作为日志条目存储在单个数组中。 代码的工作原理如下:

var myarr = new Array();
var secondarr = new Array(4,5,6);
myarr.push(secondarr);
secondarr.length=0;
secondarr.push(5,5,5);
myarr.push(secondarr);
secondarr.length=0;

//check
for(var i = 0; i < myarr.length; i++){
    var str="";
    for(var j = 0; j < myarr[i].length; j++)
        str+=myarr[i][j]+" ";

    console.log(str);
}
var myarr=new Array();
var secondarr=新数组(4,5,6);
myarr.推送(第二次推送);
第二阵列长度=0;
二次推送(5,5,5);
myarr.推送(第二次推送);
第二阵列长度=0;
//检查
对于(变量i=0;i
我正在创建单个数组
myarr
,其中存储日志条目。
secondarr
存储要记录的数据。因为我不想每次登录到
myarr
时都创建一个新数组,所以我想通过
secondarr.length=0
secondarr
设置回

但是,由于引用,这也会删除myarr中的所有内容


有没有办法避免为每个日志创建新数组?如果我按下
secondarr.slice()
,该方法当然会起作用,但这会导致多个数组,这是我试图避免的。

替换每个
secondarr.length=0通过
secondarr=[]。第一条指令修改由
secondarr
引用的数组的
length
属性。第二个使
secondarr
现在引用一个新的空数组


在任何情况下,您都必须为要存储的每个日志条目创建一个新数组。

我不确定您想做什么,但为什么不简单:
myarr.push([4,5,6]);myarr.push([5,5,5])