查找数组中的最低和最高数字值

Finding lowest and highest number number value in an Array

我正在努力研究这段代码是如何工作的,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)

鉴于我没有完全理解的上下文,我估计您想知道比较是如何进行的。

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)

不知道它是否回答了你的问题,但我认为这就是对这个函数的解释。

您定义 minNummaxNum,它们以数组中的某个值开始(在本例中为索引 0 / 第一个,即 2)。

for (let i = 0; i < numbers.length; i++) { /* ...*/ } 意味着 {} 内的所有内容都将重复数组具有索引的相同次数,并且每次迭代 i 将增加 1(从 0 开始,因此它将遍历数字数组的所有索引)

所以 numbers[i] 在第 i 位置获取值(第一次是 2,第二次是 9...)

if 条件检查当前 minNum/maxNum 是否比数字数组第 i 索引处的值 smaller/greater,如果是,则设置minNum/maxNum 到该值,因此增加/减少。

基本上,代码会遍历您定义的数组中的每个值,每次找到更大的值时,都会将其设置为 minNum/maxNum.

的值

在这种情况下 minNum 设置为 2,因为它是最小的,所以它保持为 2。 maxNum 从 2 开始,增加到 9、10、17,然后增加到 45。

不过,它的实现很简单。如果你用笔和纸擦干 运行 循环会更好。我会把你用过的算法写出来,这样对你来说会更容易。

  1. 你把一个数组作为输入。
  2. 您将 2 个变量(即 minNum 和 maxNum)初始化为第一个变量的值 数组中的元素
  3. 运行 遍历数组,检查并更新 minNum 和 maxNum.
  4. 循环结束后,你 return 数组中的那些数字。 就是这样!

本例中均从 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

然后开始遍历数字数组

让我们先介绍如何获得最低数字:

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 将自行覆盖,只要您能找到一个高于先前存储的值的数字。 希望这能解释你不明白的地方