繁体   English   中英

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

[英]Finding min and max in array Javascript

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

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])

您尝试传递数组,但函数(最小值、最大值)只接受数字 arguments。

您需要使用扩展运算符 ( ... )将数组解压缩为 arguments 数组:

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 种方式找到最大值和最小值。 第一种方法你 go 在 javascript 中使用最大和最小形式数学 function,如果你需要在必须从最大值和最小值设置数字时使用,像这样:

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]))

您可以从此链接查看 output ;

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

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]);

 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()来实现您想要的结果。

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

例子

 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]))

或者,作为单线(没有什么新东西,只是更紧凑):

 const getMinMax=arr=>[Math.min(...arr),Math.max(...arr)]; console.log(getMinMax([10,3,8,1,33]))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM