JavaScript中查找数组最大/最小值的函数

3

[不使用 MIN/MATH 函数]

这个问题要求我创建一个包含两个参数的函数,第一个是数组,第二个参数是字符串“Minimum”或“Maximum”。当我不知道如何在函数中输入参数时,它让我感到困惑。因此,我决定创建两个类似的函数:extremeValue(vector, maximum)extremeValue(vector, minimum)(我仍然不知道是否可以这样做)。 下面是我的代码:extremeValue(vector, maximum)

我的做法是创建一个与vector[i]相同值的数组,然后使用if语句来判断它是否大于该向量。然而,代码却不起作用。:(

var vector = [3, 1, 1]
var maximum

//------------this function give us the vector with all same value---------------//
function set(value, len) {

    var arr = [];
    for (var i = 0; i < len; i++) {
        arr.push(value);
    }
    return arr;
}
//---------------------------------------------------//


//---------------------------------------------------//
function extremeValue(vector, maximum) {
    var answer = "";

    for (var count = 1; count++; count < vector.length) {
        if (set(vector[count], vector.length) > vector)
            answer += vector[count] + "is maximum"
    }
    return answer
}

//---------------------------------------------------//
console.log(extremeValue(vector, maximum))
5个回答

4

以下是一种不使用Math或其他JavaScript函数,可以找到数组的最大值最小值的方法。

var arr = [2, 3, 5, 10, 2, -9, 3];

alert("Max value is " + arrayMaxMin(arr, "Max"));
alert("Min value is " + arrayMaxMin(arr, "Min"));

function arrayMaxMin(array, selector) {

  var val = array[0];   // variable to hold the current max/min value.

  for (var i = 1; i < array.length; i++) {
    if (selector == "Min") {
      if (array[i] < val) {
        val = array[i];
      }
    } else if (selector == "Max") {
      if (array[i] > val) {
        val = array[i];
      }
    }

  }
  return val;
}


嗨,他们不允许我们使用min max函数 :( - Tim Nguyen
@TimNguyen 我已经更新了答案,使其在不使用 Math 函数的情况下工作 :) - Aruna Tebel
1
arrayMaxMin([10,1,12], "Min") won't work. Your example works only because you have negative number in it. 1 < '' will return false. You can change your answer to var val = array[0] and for (var i = 1; i < array.length; i++) { - tylik
同时,val = arr[i]; 应改为 val = array[i] - tylik

3
您可以使用Math函数。 Math.min将返回传递的数字中最小的数。您不能直接在数组上调用这些函数,因此可以使用apply来调用这些函数,并将array作为参数传递给函数。

Math.min()函数返回零个或多个数字中最小的数字。

Math.max如下所示:

// array: The source array
// type: 'max' or 'min' to find Maximum or Minimum number
var getNum = function(array, type) {
  return Math[type].apply(null, array);
};

var arr = [1, 3, 35, 12];
document.write('Max: ' + getNum(arr, 'max'));

document.write('<br />Min: ' + getNum(arr, 'min'));

更新

他们不允许我们使用min max函数。

你可以使用数组方法来获取最大值和最小值。将数组按升序排序,然后第一个元素是最小值,最后一个元素是最大值。

// array: Source array
// type: 'max' or 'min'
var getNum = function(array, type) {

  // Sort the array by ascending order
  array.sort(function(a, b) {
    return a < b;
  });

  return type === 'max' ? array[0] : array[array.length - 1];
};

var vector = [233, 10, 32543, 54321];

var max = getNum(vector, 'max');
var min = getNum(vector, 'min');

document.write('Max: ' + max);
document.write('<br />Min: ' + min);


嗨,他们不允许我们使用min max函数 :( - Tim Nguyen

3

这也应该可以!希望能对你有所帮助。

 var arr = [2 ,4 ,56, 23, 10];
 var max = arr.reduce(function(x,y){
    return (x > y) ? x : y;
 });
 var min = arr.reduce(function(x,y){
    return (x < y) ? x : y;
 });
 console.log('Max: '+ max);
 console.log('Min: '+ min);

MAX不是一个常量,所以你需要使用max作为你的命名约定? - Kick Buttowski

2
你可以像这样做:

你可以这样做:

function extremeValue(my_arr, min_max) {
  var retval, i, len;
  for(i=0,len=my_arr.length; i < len; i++) {
     if (min_max == 'minimum') {
       retval = (my_arr[i] < retval ? my_arr[i] : retval);
     } else {
       retval = (my_arr[i] > retval ? my_arr[i] : retval);
     }
  }
  return retval;
}

然后你可以像这样调用它:
console.log(extremeValue(vector, 'maximum'));
console.log(extremeValue(vector, 'minimum'));

嗨,他们不允许我们使用min max函数 :( - Tim Nguyen
1
我没有使用Math.min()Math.max() - Karl Wilbur

0

没有内置的数学最小/最大方法:

let minMaxValues = (arr) => {
    let maxValues;
    let minValues;
 
    for (let i = 0; i < arr.length; i++) {
      // check first value with all iterater
      if(arr[i] < arr[1]){
        minValues = arr[i];
      }

      // check last value with all iterater
      if(arr[i] > arr[arr.length-1]){
        maxValues = arr[i];
      }
      
    }
    console.log(minValues);
    console.log(maxValues);
  }

  minMaxValues([100, 20, 30, 10, 50]);


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接