在实际业务中有的时候要取出数组中的最大值或最小值。但在数组中并没有提供arr.max()和arr.min()这样的方法。那么是不是可以通过别的方式实现类似这样的方法呢?那么今天我们就来整理取出数组中最大值和最小值的一些方法。
取数组中最大值
可以先把思路理一下:
将数组中第一个元素赋值给一个变量,并且把这个变量作为最大值;
开始遍历数组,从第二个元素开始依次和第一个元素进行比较
如果当前的元素大于当前的最大值,就把当前的元素值赋值给最大值
移动到下一个元素,继续按前面一步操作
当数组元素遍历结束时,这个变量存储的就是最大值
代码如下:
Array.prototype.max = function () {
// 将数组第一个元素的值赋给max
var max = this[0];
// 使用for 循环从数组第一个值开始做遍历
for (var i = 1; i < this.length; i++) {
// 如果元素当前值大于max,就把这个当前值赋值给max
if (this[i] > max) {
max = this[i];
}
}
// 返回最大的值
return max;
}
来看一个示例:
var arr = [1,45,23,3,6,2,7,234,56];
arr.max(); // 234
上面的示例,数组中都是数值,那么如果数组中不全是数值会是一个什么样的效果呢?来测试一下先:
var arr = [1,45,23,3,6,2,7,234,56,'2345','a','c'];
arr.max(); // 'c'
这并不是我们想要的结果吧。(此处跪求解决方案)
通过前段时间的学习,都知道for循环性能要比forEach()差,那可以将上面的方法改成forEach()方法:
Array.prototype.max = function (){
var max = this[0];
this.forEach (function(ele,index,arr){
if(ele > max) {
max = ele;
}
})
return max;
}
var arr = [1,45,23