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

伪代码示例:

let array = [100, 0, 50]

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

当前回答

这个问题的递归解

const findMinMax = (arr, max, min, i) => arr。长度=== I ?{ 分钟, 马克斯 }: findMinMax ( 加勒比海盗, r[i] > Max ?Arr [i]: max, Arr [i] < min ?Arr [i]: min, + + i) Const arr = [5,34, 2,1,6,7,9,3]; const max = findMinMax(arr, arr[0], arr[1], 0) console.log (max);

其他回答

如果你使用prototype.js框架,那么这段代码将正常工作:

arr.min();
arr.max();

这里有文档:max的Javascript原型框架

如何使用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 );

我想用下面的方式来做这件事

const findMaxAndMin = (arr) => {
  if (arr.length <= 0) return -1;
  let min = arr[0];
  let max = arr[0];
  arr.forEach((n) => {
    n > max ? (max = n) : false;
    n < min ? (min = n) : false;
  });
  return [min, max];
};

下面是一种从对象数组中获取最大值的方法。创建一个副本(使用切片),然后按降序对副本排序并抓取第一项。

var myArray = [
    {"ID": 1, "Cost": 200},
    {"ID": 2, "Cost": 1000},
    {"ID": 3, "Cost": 50},
    {"ID": 4, "Cost": 500}
]

maxsort = myArray.slice(0).sort(function(a, b) { return b.ID - a.ID })[0].ID; 
var max_of_array = Math.max.apply(Math, array);

完整的讨论见: http://aaroncrane.co.uk/2008/11/javascript_max_api/