简体   繁体   English

数组中最小数和最大数之差

[英]Difference between the smallest and biggest number in an array

I'm stuck with the following assignment.我坚持以下任务。

Code this function to take an array and return the difference between the smallest and the biggest number.编码此 function 以获取一个数组并返回最小和最大数字之间的差。

I've tried the following but keep getting an error.我已经尝试了以下但不断收到错误。 What am I doing wrong?我究竟做错了什么?

function differenceMinMax(array) {

     var arrayMin = array[0];
     var arrayMax = array [0];

     for  (var i=0; i <= array.length; i++) {

     if (array[i] < arrayMin) {
       arrayMin = array[i];
     } 
     if (array[i] > arrayMax) {
       arrayMax = array[i];
     }
    }

    return arrayMax - arrayMin;

    }

For your example to work, you could change your else to else if in your if/else clause.为了使您的示例正常工作,您可以在 if/else 子句中将else更改为else if Also, change i <= array.length to i < array.length .此外,将i <= array.length更改为i < array.length Array's length is always numerically greater than its highest index (by 1), because in javascript indexes start from 0.数组的长度在数值上总是大于其最高索引(1),因为在 javascript 中索引从 0 开始。

Here's how to do it with way less code, using ES6.以下是如何使用 ES6 以更少的代码来做到这一点。

 const diff = (arr) => Math.max(...arr) - Math.min(...arr); const arr1 = [1, 2, 3, 4, 5]; const arr2 = [99, 0, -99]; console.log(diff(arr1)); // Logs 4 console.log(diff(arr2)); // Logs 198

  1. array[array.length] is not exist so change array[array.length] 不存在所以改变

    i <= array.lenght

    to

    i < array.length

  2. change改变

    else (array[i] > arrayMax)

    to

    else if(array[i] > arrayMax)

Replace your array and try this below code, It will work.替换您的数组并尝试以下代码,它将起作用。

 var array = ['56', '1','9','0','20','2021']; var max = min= 0; for(var i=0; i<array.length; i++) { if(parseInt(array[i]) > parseInt(max)) { max = array[i] if(i == 0) min = max } else if(parseInt(array[i]) < parseInt(min)) { //console.log(max_2) min = array[i]; } } console.log("Maximum Number In Your Array "+ max) console.log("Manimum Number In Your Array "+min)

//We are going to sort the array, find the first & last elem of the array and perform the operation
var array = [9, 12, 14, 3, 5, 67];

var difference = differenceBetweenLargestAndSmallestElement(array);

console.log(difference);

function differenceBetweenLargestAndSmallestElement(array) {
  var sortedArray = array.sort(function(a, b) {
    return a - b
  });

  console.log(sortedArray);

  var firstElement = sortedArray[0];
  var lastElement = sortedArray[sortedArray.length - 1];

  return lastElement - firstElement;
}

Please find a fiddle - https://jsfiddle.net/Ayyub/zysp63fm/12/请找一个小提琴 - https://jsfiddle.net/Ayyub/zysp63fm/12/

try this: 'var arrayMin = 0;试试这个:'var arrayMin = 0; var arrayMax = 0;' var arrayMax = 0;' instead of 'var arrayMin = array[0];var arrayMax = array [0]'而不是 'var arrayMin = array[0];var arrayMax = array [0]'

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

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