我正在努力鍛煉這段代碼是如何作業的,maxNum 部分是如何作業的?maxNum[0] < numbers[i] 它如何從陣列中獲取最后一個數字?
function sortThem(numbers) {
let minNum = numbers[0]
let maxNum = numbers[0]
for (let i = 0; i < numbers.length; i ) {
if (minNum > numbers[i]) {
minNum = numbers[i]
} else if (maxNum < numbers[i]) {
maxNum = numbers[i]
}
}
console.log(maxNum)
const minMax = [minNum, maxNum]
return minMax
}
const results = sortThem([2, 9, 10, 17, 45])
console.log(results)
uj5u.com熱心網友回復:
在這個例子中,兩者都從 2 開始
let minNum = numbers[0]//equals first element in the numbers array and thats 2 in this example
let maxNum = numbers[0]// equals 2 as well
然后你開始遍歷 numbers 陣列
讓我們先介紹如何獲得最低數字:
if(minNum > numbers[i]){
1st loop
minNum = 2 not greater than 2, nothing happens
2nd loop
minNum = 2 not greater than 9, nothing happens
3rd loop
minNum = 2 not greater than 10, nothing happens
4th loop
minNum = 2 not greater than 17, nothing happens
last loop
minNum = 2 not greater than 45, nothing happens
minNum = 在整個迭代程序中從不改變,因為沒有找到小于 2 的數字,因此它保持初始值
現在對于 maxNum:
} else if (maxNum < numbers[i]){
1st loop
maxNum= 2, numbers[i]=2, numbers[i] not greater than maxNum, nothing happens
2nd loop
maxNum= 2, numbers[i]=9, numbers[i] is greater than maxNum, maxNum=9 now
3rd loop
maxNum= 9, numbers[i]=10, numbers[i] is greater than maxNum, maxNum=10 now
4th loop
maxNum= 10, numbers[i]=17, numbers[i] is greater than maxNum, maxNum=17 now
last loop
maxNum= 17, numbers[i]=45, numbers[i] is greater than maxNum, maxNum=45 now
只要您找到一個高于先前存盤的值的數字,maxNum 就會自行覆寫。希望這能解釋你不明白的地方
uj5u.com熱心網友回復:
鑒于我不完全了解的背景關系,我估計您想知道比較是如何作業的。
function sortThem(numbers) {
let minNum = numbers[0]
let maxNum = numbers[0]
for (let i = 0; i < numbers.length; i ) { // you can start loop at index 1 since you have set default val to 0
if (minNum > numbers[i]) { // if my current number in array is smaller than the most recent minNum
minNum = numbers[i] // set minNum to current number Exit out of if/else structure since else will not be triggered
} else if (maxNum < numbers[i]) { // if currentNumber is greater than given maxNum
maxNum = numbers[i] //set maxnum to current number
}
}
console.log(maxNum)
const minMax = [minNum, maxNum] //useless
return minMax // return [minNum, maxNum];
}
const results = sortThem([2, 9, 10, 17, 45])
console.log(results)
不知道它是否回答了你的問題,但我認為這就是對這個功能的解釋。
uj5u.com熱心網友回復:
您定義minNumand maxNum,它從陣列中的某個值開始(在本例中為索引 0 / 第一個,即 2)。
for (let i = 0; i < numbers.length; i ) { /* ...*/ }
表示 {} 中的所有內容都將重復陣列具有索引的相同次數,并且每次迭代i都將增加一(從 0 開始,因此它將回圈遍歷 numbers 陣列的所有索引)
所以在第一個位置numbers[i]獲得價值i(第一次它將是2,第二次9......)
if 條件檢查當前minNum/maxNum是否小于/大于inumbers 陣列索引處的值,如果是,則將minNum/maxNum設定為該值,因此增加 / 減少。
基本上,代碼會遍歷您定義的陣列中的每個值,并且每次找到更大的值時,都會將其設定為minNum/的值maxNum。
在這種情況下minNum設定為 2,因為它是最小的,所以它保持 2。
maxNum從 2 開始,增加到 9、10、17,然后到 45。
uj5u.com熱心網友回復:
雖然,它是一個簡單的實作。如果你用筆和紙干跑回圈會更好。我會寫出你用過的演算法,這樣你就更容易了。
- 您將陣列作為輸入。
- 您將 2 個變數(即 minNum 和 maxNum)初始化為陣列中第一個元素的值
- 在陣列上運行一個回圈,以檢查和更新 minNum 和 maxNum 的值。
- 回圈結束后,您將這些數字回傳到一個陣列中。而已!
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/483136.html
標籤:javascript 数字
