Javascript Push() 方法更改引用数组中的值

标签 javascript

所以,这并不像我预期的那样:

var x = [1,2,3];
var y = x;
y.push(4);
console.log(x);

我以为它会记录 [1,2,3] 但它记录 [1,2,3,4]!我需要的是有一个函数,只为 y 添加值,而不是 x - 我希望能够处理 [1,2,3] 数组,但也能够“回到它”并且取消所做的更改。我希望这有足够的意义......

最佳答案

var x = [1,2,3];
var y = x.slice();
y.push(4);
console.log(x);  // Outputs 1,2,3

使用slice是获取数组副本的最简单方法。

请记住,在 Javascript 中,xy 是对数组的引用。在这一点上,Javascript 的行为与 PHP 等不同。

因此,当您执行 y.push(4) 时,您会将一个元素插入 x 引用的同一数组中。

关于Javascript Push() 方法更改引用数组中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14924933/

相关文章:

javascript - 无法设置 null 错误的innerHTML。虽然 html ID 存在

javascript - 用数字和字符串细化数组的搜索结果

javascript - useSelector 钩子(Hook)首先返回未定义的状态,然后在操作调用后正确返回状态

javascript - 如何在JS严格模式下删除当前事件监听器(没有被调用者)

javascript - 将 url 加载到 AJAX 而不是点击并解析结果?

javascript - Knockout.js 不更新可观察值

javascript - 将函数作为 props 传递时出现 ReactJS 错误

javascript - 如何使用 javascript 读取文件的第二行

javascript - Jade Minified Javascript 未解析为文本 block

javascript - 如何让侧边栏执行主文档中的 javascript 代码?