我怎样才能轻松地获得一个JavaScript数组的最小或最大元素?

伪代码示例:

let array = [100, 0, 50]

array.min() //=> 0
array.max() //=> 100

当前回答

替代溶液

class SmallestIntegerFinder {
  findSmallestInt(args) {
    return args.reduce((min,item)=>{ return (min<item ? min : item)});
  }
}

class SmallestIntegerFinder {
  findSmallestInt(args) {
    return Math.min(...args)
  }
}

class SmallestIntegerFinder {
  findSmallestInt(args) {
    return Math.min.apply(null, args);
  }
}

class SmallestIntegerFinder {
  findSmallestInt(args) {
    args.sort(function(a, b) {
    return a - b; } )
    return args[0];
  }
}

其他回答

如果你使用sugar.js库,你可以按照你的建议编写arr.min()和arr.max()。您还可以从非数值数组中获得最小值和最大值。

min(map, all = false)返回数组中包含 最小值。Map可以是映射要检查的值的函数或 作为快捷键的字符串。如果全部为真,将返回所有的min 数组中的值。 max(map, all = false)返回数组中带有 最大的价值。Map可以是映射要检查的值的函数 或者是作为快捷键的字符串。如果all为true,将返回all max 数组中的值。

例子:

[1,2,3].min() == 1
['fee','fo','fum'].min('length') == "fo"
['fee','fo','fum'].min('length', true) == ["fo"]
['fee','fo','fum'].min(function(n) { return n.length; }); == "fo"
[{a:3,a:2}].min(function(n) { return n['a']; }) == {"a":2}
['fee','fo','fum'].max('length', true) == ["fee","fum"]

像Lo-Dash和underscore.js这样的库也提供了类似强大的min和max函数:

例子来自《Lo-Dash》:

_.max([4, 2, 8, 6]) == 8
var characters = [
  { 'name': 'barney', 'age': 36 },
  { 'name': 'fred',   'age': 40 }
];
_.max(characters, function(chr) { return chr.age; }) == { 'name': 'fred', 'age': 40 }

如何使用Math.max/Math扩展内置Array对象呢?最小值:

Array.prototype.max = function() { Math.max返回。应用(null,这); }; Array.prototype.min = function() { Math.min返回。应用(null,这); }; 令p = [35,2,65,7,8,9,12,121,33,99]; console.log('最大值为:${p.max()} ' + \nMin值为:${p.min()} ');

这是一个JSFiddle。

扩充内置库可能会导致与其他库的冲突(有些见),所以你可能更喜欢直接将Math.xxx()应用到你的数组:

var min = Math.min.apply(null, arr),
    max = Math.max.apply(null, arr);

另外,假设你的浏览器支持ECMAScript 6,你可以使用扩展语法,它的功能类似于apply方法:

var min = Math.min( ...arr ),
    max = Math.max( ...arr );

我想分享一下我简单易懂的解决方案。

对于最小值:

var arr = [3, 4, 12, 1, 0, 5]; 是我的 = arr[0]; for (var k = 1; k < arr.length; k++) { if (arr[k] < min) { 分钟 = arr[k]; } } console.log(“我的冰淇淋:”+分钟);

对于最大值:

Var arr = [3,4,12,1,0,5]; Var Max = arr[0]; For (var k = 1;K < arrr .length;k + +) { If (arr[k] > max) { Max = arr[k]; } } console.log("Max is: " + Max);

下面是一个简单的JS方法。

function getMinArrayVal(seq){
    var minVal = seq[0];
    for(var i = 0; i<seq.length-1; i++){
        if(minVal < seq[i+1]){
        continue;
        } else {
        minVal = seq[i+1];
        }
    }
    return minVal;
}

如果你需要性能,那么对于小数组来说这是最好的方法:

var min = 99999;
var max = 0;
for(var i = 0; i < v.length; i++)
{
    if(v[i] < min)
    {
        min = v[i];
    }
    if(v[i] >= max)
    {
        max = v[i];
    }
}