在javascript中编写一个函数查找数组的最大值/最小值

时间:2015-08-18 06:31:51

标签: javascript function max

[不使用MIN / MATH功能]

问题要求我创建包含2个参数的函数。第一个是数组,第二个参数是字符串“Minimum”或“Maximum”。当我不知道如何将参数作为函数中的字符串输入时,这让我感到困惑。所以我决定创建2个类似的函数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 个答案:

答案 0 :(得分:3)

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

  

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

Math.max如下:

&#13;
&#13;
// 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'));
&#13;
&#13;
&#13;

<强>更新

  

他们不允许我们使用min max function

您可以使用数组方法获取最大值和最小值。按升序对数组进行排序,然后数组中的第一个元素最小,最后一个元素最大。

&#13;
&#13;
// 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);
&#13;
&#13;
&#13;

答案 1 :(得分: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);

答案 2 :(得分: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'));

答案 3 :(得分:2)

如果不使用Math或任何其他javascript函数,您可以找到数组的maxmin值,如下所示。

&#13;
&#13;
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 = "";   // variable to hold the current max/min value.

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

  }
  return val;
}
&#13;
&#13;
&#13;

答案 4 :(得分: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]);