2 回答
TA贡献1780条经验 获得超5个赞
如您所见,我已经使用 SOSnippet 更新了您的问题,并且控制台日志显示这descending
实际上只是参考ascending
- 这意味着它们在内存中是相同的项目 - 改变一个也会改变另一个。意味着你必须先做你的数组的浅拷贝.slice()
function ascDesc(arr) {
let ascending = arr.slice().sort((a,b) => a - b);
let descending = arr.slice().sort((a,b) => b - a);
console.log({ ascending, descending });
}
ascDesc([7,5,2,7,8,6,10,-10]);
TA贡献1860条经验 获得超9个赞
在 Javascript 中,数组变量是通过引用传递的,这意味着您的ascending, descending, 和arr都指向相同的内存引用和值。
一个简单的解决方案是使用扩展运算符将您的数组克隆到一个新的引用中可以解决您的问题:
function ascDesc(arr) {
let ascending = [...arr].sort((a,b) => a - b);
let descending = [...arr].sort((a,b) => b - a);
console.log({ ascending, descending, arr });
}
ascDesc([7,5,2,7,8,6,10,-10]);
添加回答
举报