var values = [1,2,3,4,5,6]; var max = Math.max.apply(Math,values); //求最大值 var min = Math.min.apply(Math,values); //求最小值 ECMA-262对内置对象的定义是:“由ECMAScript实现提供的、不依赖于宿主环境的对象,这些对象在ECMAScript程序执行之前就已经存在了。”意思就是说,开发人员不必显式地实例化内置对象,因为它们已经实例化了。 内置对象有:Object,Array,Date,RegExp,Function,Boolean,Number,String,Global,Math和JSON,一共11个。 其中String,Number和Boolean为包装对象,对应 字符串,数字和布尔值三种数据类型。
@russj 你没做测试吧,那样排序是不行的,会把数组的数字转成字符串后再排序,随便写几个数测试下: var values = [1,12,18,23,34,16,5]; values.sort();排序后结果为: [1, 12, 16, 18, 23, 34, 5] 可以看到排序结果并不正确!!! 数组的sort()方法会调用每个数组项的toString()转型方法,然后比较得到的字符串,以确定如何排序。
正确的做法还需要写一个比较函数,再传到sort里面去排序。
内置函数Math.max()和Math.min()可以分别找出参数中的最大值和最小值。
Math.max(1, 2, 3, 4); // 4
Math.min(1, 2, 3, 4); // 1
这些函数对于数字组成的数组是不能用的。但是,这有一些类似地方法。
Function.prototype.apply()
让你可以使用提供的this
与参数组成的_数组(array)_来调用函数。
var numbers = [1, 2, 3, 4];
Math.max.apply(null, numbers) // 4
Math.min.apply(null, numbers) // 1
给apply()
第二个参数传递numbers
数组,等于使用数组中的所有值作为函数的参数。
一个更简单的,基于ES2015的方法来实现此功能,是使用展开运算符.
var numbers = [1, 2, 3, 4];
Math.max(...numbers) // 4
Math.min(...numbers) // 1
此运算符使数组中的值在函数调用的位置展开。
from 每天一条JS小知识 #45