在 Javascript 数组中查找最小值和最大值

问题描述 投票:0回答:6

所以我尝试找到数组的最小值和最大值并想要调用该函数。我编写了这段代码,但它不起作用。我只是不明白为什么。

function getMinMax(arr){
  let maximum = Math.max(arr);
  let minimum = Math.min(arr);
 let result =  ([maximum, minimum]); 
  return result;
};

getMinMax([10,3,8,1,33])
javascript arrays
6个回答
4
投票

您可以通过两种方式找到最大值和最小值。 第一种方法 如果您需要在必须设置最大值和最小值的数字时使用,您可以继续使用 JavaScript 中的最大和最小形式数学函数,如下所示:

let maximum = Math.max(10, 3, 8, 1, 33);
let minimum = Math.min(10, 3, 8, 1, 33);

现在你有一个数组,所以你必须转换为如上所述,例如: 让数组 = [1,2,3,4,5] 当您在数组之前使用 ... 时,您将数组转换为: 1,2,3,4,5 例如:

function getMinMaxWithMath(arr){
  // Math.max(10,3,8,1,33)
  let maximum = Math.max(...arr);
  // Math.min(10,3,8,1,33)
  let minimum = Math.min(...arr);
 let result =  ([maximum, minimum]); 
  return result;
};

console.log('getMinMaxWithMath ', getMinMaxWithMath([10,3,8,1,33]));

例如,您可以使用 for 循环的第二种方法:

function getMinMaxForLoop(arr){
  let maximum = arr[0];
  let minimum = arr[0];
  for (let i = 0 ; i < arr.length; i++) {
    if (maximum < arr[i]) {
      maximum = arr[i];
    } else {
      minimum = arr[i];
    }
    
  }
 let result =  ([maximum, minimum]); 
  return result;
};
console.log('getMinMaxForLoop : ',getMinMaxForLoop([10,3,8,1,33]))

您可以查看此链接的输出;


4
投票

您尝试传递数组,但函数(min、max)仅接受数字参数。

您需要使用 spread 运算符 (

...
):

将数组解压为参数数组
const arr = [10, 3, 8, 1, 33];
const min = Math.min(...arr);
const max = Math.max(...arr);

所以,你的代码应该是这样的:

function getMinMax(arr){
  let maximum = Math.max(...arr);
  let minimum = Math.min(...arr);
 let result =  ([maximum, minimum]); 
  return result;
};

getMinMax([10,3,8,1,33])

2
投票

这只是...

  Math.max(...arrayName)

如果要使用该方法,需要构造数组

function getMinMax(arr) {
    let maximum = Math.max(...arr);
    let minimum = Math.min(...arr);
    let result = [maximum, minimum];
    return result;
};

getMinMax([10, 3, 8, 1, 33]);

0
投票

const getMinMax = (arr) => {
  const sortedArr = arr.sort((a,b) => a - b);
  const min = sortedArr[0];
  const max = sortedArr[sortedArr.length - 1];
  return [min, max];
};

console.log(getMinMax([10,3,8,1,33]))

您也可以使用

Array.sort()
来达到您想要的结果。


0
投票

或者,作为一行(没什么新意,只是更紧凑):

const getMinMax=arr=>[Math.min(...arr),Math.max(...arr)];

console.log(getMinMax([10,3,8,1,33]))


-1
投票

你也可以尝试这个简单易懂的数学

示例

function max(arr) {
  let i;
  let max = arr[0]
  let min = arr[0]
  for (let i = 0; i < arr.length; i++) {
    if (arr[i] > max) {
      max = arr[i]
    } else if (arr[i] < min) {
      min = arr[i]
    }
  }
  let res = (["min: " + min, "max: " + max])
  return res
}

console.log(max([10, 3, 8, 1, 33]))

© www.soinside.com 2019 - 2024. All rights reserved.