簡體   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