使用Math.max和Math.min求数组的最大值和最小值
原创
©著作权归作者所有:来自51CTO博客作者暮志未晚的原创作品,请联系作者获取转载授权,否则将追究法律责任
正常情况下,如果我们求数组的值,用到的就是for循环,如果在代码中经常求最大值和最小值的话,会显得代码很乱。所以,就考虑一中最简单的方法求最大值。
使用Math里面自带的max和min方法
function getMaxOfArray(numArray) {
return Math.max.apply(null, numArray);
}
直接调用一下上面的函数,就会返回数组中最大的值。
获取最小的就可以在上面那样修改一下就好
function getMinOfArray(numArray) {
return Math.min.apply(null, numArray);
}
这两个方法就可以直接写到全局当中即可在每个地方都可以使用
有的时候,生成一个自己的库,想直接将方法放置到原生对象上面,但是有的小伙伴发现,放置了以后在使用for in 循环的时候竟然也可以循环出来
如果我就想放置到原生对象上面还不想被循环也就是 “枚举”,那我该肿么办
那就会需要用到原生对象方法Object.defineProperty()方法会直接在一个对象上定义一个新属性,或者修改一个对象的现有属性, 并返回这个对象。
使用这个方法,我们就可以制作和原生方法一样的那种方便易用的方式。
如何使用呢?
将下面的代码运行一次,即可在原生对象上面添加方法,for循环也会查找不到
Object.defineProperty(Array.prototype, 'max', {
writable: false,
enumerable: false,
configurable: true,
value: function () {
return Math.max.apply(null, this);
}
});
Object.defineProperty(Array.prototype, 'min', {
writable: false,
enumerable: false,
configurable: true,
value: function () {
return Math.min.apply(null, this);
}
});
如何使用呢,直接在数组上调用即可
var arr = [54,545,2165,545,56];
console.log(arr.max());
console.log(arr.min());
即可返回最大值最小值