javascript - Javascript 数组更改为新数组反映在用于创建它的数组中
问题描述
我将一个数组(我们称之为 originalArr)传递给一个函数,然后我将它分配给一个新变量(我们称之为 copyArr),当我更改 copyArr 的内容时,originalArr 的内容也更改了示例代码
justAFunction([1,2,3,4,5,6,7,8]);
function justAFunction(originalArr){
let copyArr = originalArr;
copyArr.pop();
copyArr.pop();
copyArr.pop();
console.log(originalArr);
}
output = [ 1, 2, 3, 4, 5 ]
有人可以解释为什么会这样吗
解决方案
因为 JS 中的数组是引用值,所以当你尝试使用 = 复制它时,它只会复制对原始数组的引用,而不是数组的值。要创建数组的真实副本,您需要将数组的值复制到新值变量下。
见https://www.samanthaming.com/tidbits/35-es6-way-to-clone-an-array/
推荐阅读
- asp.net - 视图或函数 [视图名称] 不可更新,因为修改会影响多个基表 - 在 POST 到任何和每个控制器时
- android - 如何从 Mysql 中获取 spinner 的选定数据并设置到 spinner
- java - 排列生成器 php/java 脚本
- c++ - 带有“find_first_of”函数的 C++ 字符串错误
- c# - 如何更新列表视图行中的状态?
- python - 如何获得一页 Instagram 的所有 Instagram 昵称?
- github-pages - 在 github 中托管的站点中看不到图像
- python - 使用 xarray,如何在多维数据集上并行化一维操作?
- powershell - 奇怪的字符串问题
- android - ImageLoader 在使用前必须先进行配置