亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

相同的代碼在不同的設備上運行不同

相同的代碼在不同的設備上運行不同

千萬里不及你 2021-06-21 21:26:19
我是編碼新手,仍在學習。我的朋友給了我一個任務來編寫一個函數,該函數確實從數組中返回第二大數字,我已經設法使用 array.prototype.sort() 來完成它。他說用“<”或“>”替換“-”以使代碼更清晰,這就是問題開始的地方。我在 Windows 上使用 VCS,但它無法正常工作。我的朋友使用 mac,一切正常。在 jsfiddle 上試了一下,一切正常。const secondMax = (arr) => {  return arr.sort((a, b) => b - a)[1]; //does return the correct number after console.log()};const secondMax = (arr) => {  return arr.sort((a, b) => a < b)[1]; //does not};"a < b" 應該是降序排序 "a > b" 應該是升序排序 但是無論我使用哪個運算符,排序都會失敗并且只返回數組中的第二個數字
查看完整描述

2 回答

?
森林海

TA貢獻2011條經驗 獲得超2個贊

你應該返回一個數字,而不是一個布爾值。所以第一個是正確的。后者可能會在某些 javascript 引擎上偶然工作,但不能保證。


查看完整回答
反對 回復 2021-06-24
?
慕田峪4524236

TA貢獻1875條經驗 獲得超5個贊

sortString默認情況下對數組進行排序。如果你傳遞一個比較器,那么它是一個function取決于兩個參數和return

  • 負數,如果第一個參數小于第二個

  • 0 如果它們相等

  • 正,如果第一個參數大于第二個

使用邏輯運算符代替上述運算符是錯誤的。

但是,如果您有興趣找到第二大數字,那么最好使用循環來完成:

var largestNumbers = [];

var firstIndex = (arr[0] < arr[1]) ? 1 : 0;

largestNumbers.push(arr[firstIndex]);

largestNumbers.push(arr[1 - firstIndex]);

for (var i = 2; i < arr.length; i++) {

    if (largestNumbers[1] < arr[i]) {

        if (largestNumbers[0] < arr[i]) {

            largestNumbers[1] = largestNumbers[0];

            largestNumbers[0] = arr[i];

        }

    }

}

這比對數組排序更快,更重要的是,它不會為了找到第二大數字而破壞您的初始順序。


查看完整回答
反對 回復 2021-06-24
  • 2 回答
  • 0 關注
  • 191 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號