2 回答

TA貢獻(xiàn)1780條經(jīng)驗(yàn) 獲得超5個(gè)贊
如您所見,我已經(jīng)使用 SOSnippet 更新了您的問題,并且控制臺(tái)日志顯示這descending
實(shí)際上只是參考ascending
- 這意味著它們?cè)趦?nèi)存中是相同的項(xiàng)目 - 改變一個(gè)也會(huì)改變另一個(gè)。意味著你必須先做你的數(shù)組的淺拷貝.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貢獻(xiàn)1860條經(jīng)驗(yàn) 獲得超9個(gè)贊
在 Javascript 中,數(shù)組變量是通過引用傳遞的,這意味著您的ascending, descending, 和arr都指向相同的內(nèi)存引用和值。
一個(gè)簡(jiǎn)單的解決方案是使用擴(kuò)展運(yùn)算符將您的數(shù)組克隆到一個(gè)新的引用中可以解決您的問題:
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]);
添加回答
舉報(bào)