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]);
添加回答
舉報