javascript - Javascript中.sort()方法的问题,两个数组排序而不是一个
问题描述
我正在尝试将数组定义为b
数组参数的独立副本a
。因此,我想改变b
而不改变a
.
但这里有一个谜:当我排序b
时,a
也排序了!
function firstDuplicate(a) {
let b = a;
console.log(`this is a : ${a}`) // this is a : 2,1,3,5,3,2
console.log(`this is b : ${b}`) // this is b : 2,1,3,5,3,2
b.sort()
console.log(`this is a : ${a}`) // this is a : 1,2,2,3,3,5 (my problem)
console.log(`this is b : ${b}`) // this is b : 1,2,2,3,3,5
}
firstDuplicate([2, 1, 3, 5, 3, 2])
我怎样才能避免这种情况?
非常感谢您的回复。
解决方案
您不是在复制a
,您只是在创建对它的新引用。用 复制数组slice()
,然后对其进行排序。
let b = a.slice().sort();
推荐阅读
- java - 如何修复加载广告时尝试调用虚拟方法的问题
- php - 相同配置的复选框表单元素生成相同的 HTML 代码,但显示不同
- java - 无法解析 google cookie 过期日期
- c# - 如何等待任务完成?
- regex - 为什么角度模式正则表达式不能在 html 中通过在 typescript 中运行良好
- typescript - 模态弹出窗口在分层组件结构 angular-bootstrap-md 中不起作用
- html - 连续容器不工作。第一个有效,但第二个未在浏览器中显示
- shell - Docker .env 变量到脚本
- excel - 如何结合两个搜索框的调查?
- javascript - 本次计算中 Macrotask 和 Microtask 队列的状态