简体   繁体   中英

Trying to find the min, max and avg of this array

function minMaxAvgArray(arr){
  var min = arr[0];
  var largest = arr[0];
  var sum = arr[0];
  
  for (var i=0;i<arr.length; i++){
    if (arr[i]<min){
    min=arr[0];
    }
    if (arr[i]>largest){
      largest=arr[0];
    }
    
    sum += arr[i];
      
    }
  return [min, largest, sum/=arr.length];
}
y = minMaxAvgArray([-2,3,4,5]);
console.log(y);

I'm trying to find the min,max and avg of the given array, every time I run this code the output is always "(-2, -2 2) can anyone explain it to me?

Try like this.

 function minMaxAvgArray(arr){ var min = arr[0]; var largest = arr[0]; var sum = 0; for (var i=0;i<arr.length; i++){ if (arr[i]<min){ min=arr[i]; } if (arr[i]>largest){ largest=arr[i]; } sum += arr[i]; } return [min, largest, sum/=arr.length]; } y = minMaxAvgArray([-2,3,4,5]); console.log(y);

I would try to simplify your code with separated functions, something like:

 const data = [-2, 3, 4, 5]; const sum = (d) => d.reduce((a, b) => a + b, 0); const avg = (d) => (sum(d) / d.length) || 0; const max = (d) => Math.max(...d.map(v => v)); const min = (d) => Math.min(...d.map(v => v)); const result = [min(data), max(data), avg(data)]; console.log(result);

You need to change some indices to 1 instead of zero and start the loop from index one, because you take the values from index zero ass start value.

 function minMaxAvgArray(arr) { var min = arr[0]; var largest = arr[0]; var sum = arr[0]; for (var i = 1; i < arr.length; i++) { // iterate from 1 bc 0 is start value if (arr[i] < min) min = arr[i]; // assign index i if (arr[i] > largest) largest = arr[i]; // assign index i sum += arr[i]; } return [min, largest, sum /= arr.length]; } const y = minMaxAvgArray([-2, 3, 4, 5]); // declare variable console.log(y);

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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