javascript - 在函数内复制数组

标签 javascript arrays scope copy

我在使用下一个代码时遇到问题:

test1 = [0,0];
function func(test)
{
    var test2 = new Array();
    for(var i = 0; i < test.length; i++)
    if(test[i] == 0)
    {
        test[i] = 1;
        test2.push(test);
        test[i] = 0;
    }
    return test2;
}
a = func(test1);
document.write(a[0].toString()+"<br/>");
document.write(a[1].toString());

输出是:

0,0
0,0

我已经用控制台检查过:当我在条件内更改 test[i] 时,在 test2.push(test) 之后,test2[test2.length] 也会更改。 (为什么?)

是否存在范围问题? 我应该怎么做才能得到这样的输出?

1,0
0,1

谢谢。

最佳答案

  test2.push(test);

这不会创建测试数组的副本,而只是存储对输入数组的新引用。因此,您的函数所做的就是存储对同一输入参数的多个引用。如果您想存储真实副本,请使用以下命令:

 test2.push( test.slice(0) );

关于javascript - 在函数内复制数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9597014/

相关文章:

javascript - 我可以使字母过滤函数中的语句满足两个参数,同时保留语句本身的名称吗?

Javascript从字符串的开头和结尾删除特殊字符

javascript - window.location.href 在 Safari 中不起作用

C 语言 -> 将段落中的单词分开

javascript - 为什么格式化程序在片段 xml 中不起作用?

javascript - 搜索/过滤嵌套数组 Javascript/Lodash

数组查找中的 PHP 未定义索引

c++ - 跟踪自动变量的生命周期?

angularjs - Angular JS Action on ng-change the select dropdown

xcode - 在不公开其类和相关功能的情况下创建一个公共(public)变量?