查找数组中的最低和最高数字值
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)
不知道它是否回答了你的问题,但我认为这就是对这个函数的解释。
您定义 minNum
和 maxNum
,它们以数组中的某个值开始(在本例中为索引 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。
不过,它的实现很简单。如果你用笔和纸擦干 运行 循环会更好。我会把你用过的算法写出来,这样对你来说会更容易。
- 你把一个数组作为输入。
- 您将 2 个变量(即 minNum 和 maxNum)初始化为第一个变量的值
数组中的元素
- 运行 遍历数组,检查并更新 minNum 和
maxNum.
- 循环结束后,你 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 将自行覆盖,只要您能找到一个高于先前存储的值的数字。
希望这能解释你不明白的地方
我正在努力研究这段代码是如何工作的,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)
不知道它是否回答了你的问题,但我认为这就是对这个函数的解释。
您定义 minNum
和 maxNum
,它们以数组中的某个值开始(在本例中为索引 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。
不过,它的实现很简单。如果你用笔和纸擦干 运行 循环会更好。我会把你用过的算法写出来,这样对你来说会更容易。
- 你把一个数组作为输入。
- 您将 2 个变量(即 minNum 和 maxNum)初始化为第一个变量的值 数组中的元素
- 运行 遍历数组,检查并更新 minNum 和 maxNum.
- 循环结束后,你 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 将自行覆盖,只要您能找到一个高于先前存储的值的数字。 希望这能解释你不明白的地方