第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

array.sort() 以相同的方式對(duì)所有內(nèi)容進(jìn)行排序

array.sort() 以相同的方式對(duì)所有內(nèi)容進(jìn)行排序

開滿天機(jī) 2023-03-18 17:45:20
我正在嘗試通過進(jìn)行以下練習(xí)來練習(xí):編寫一個(gè)函數(shù),它接受一個(gè)數(shù)值數(shù)組并返回一個(gè)包含兩個(gè)數(shù)組的對(duì)象。第一個(gè)應(yīng)該按升序排列元素,第二個(gè)應(yīng)該按降序排列元素。這是沒有驗(yàn)證部分的代碼(我知道這不會(huì)造成任何麻煩):function ascDesc(arr) {   let ascending = arr.sort((a,b) => a - b);   let descending = arr.sort((a,b) => b - a);       console.log({ ascending, descending }); }ascDesc([7,5,2,7,8,6,10,-10]);這將返回以相同方式排序的兩個(gè)數(shù)組。我知道.sort()不會(huì)返回新數(shù)組,我假設(shè)這與此有關(guān),但我仍然不明白為什么會(huì)這樣,因?yàn)槲覍?nèi)容存儲(chǔ)在兩個(gè)單獨(dú)的變量中。有人可以幫我理解嗎?我已經(jīng)通過在方法.map(e => e)之前添加來解決它.sort()。嘗試在此處進(jìn)行谷歌搜索,但似乎找不到答案,MDN 也無(wú)濟(jì)于事。
查看完整描述

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]);


查看完整回答
反對(duì) 回復(fù) 2023-03-18
?
慕碼人2483693

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]);


查看完整回答
反對(duì) 回復(fù) 2023-03-18
  • 2 回答
  • 0 關(guān)注
  • 153 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)