这两个方法都接收2个参数:一个在每一项上都调用的函数和(可选的)作为归并基础的初始值。传递的函数需要接收4个参数:前一个值,当前值,项的索引和数组对象。这个函数的返回值会作为第一个参数传递给下一项,第一次迭代发生在数组的第二项上,因此第一个参数是数组的第一项,第二个参数是数组的第二项。
例:
var value = [1,2,3,4,5]; var sum = value.reduce(function(prev,cur,index,array){ return prev + cur; }); //sum = 15
//第一次执行回调函数,prev = 1,cur = 2,第二次,prev = 3(第一次函数返回结果1+2),cur = 3(当前数组项)。这个过程会把数组每一项都访问一遍。
reduceRight除了方向不一样,其他都一样。
Date类型
Date类型使用自UTC1970.1.1午夜零时开始经过的毫秒数来保存日期,可以将日期精确到1970.1.1之前或之后100 000 000(一亿)年。
使用Date构造函数而不传参数,新对象会获得当前日期和时间,要创建特定日期时间,必须传入表示该日期的毫秒数,ECMAScript提供了两个方法Date.parse和Date.UTC方法来简化操作。
Date.parse方法接收一个表示日期的字符串参数。这个方法因实现而异,而且通常因地区而异。美国地区的浏览器支持以下格式:
月/日/年,如6/13/2004
英文月名 日,年,如January 12,2004
英文名星期几 英文月名 日 年 时:分:秒 时区,如Tue May 25 2004 00:00:00 GMT-0700
ISO 8601扩展格式YYYY-MM-DDTHH:mm:ss.sssZ,如2004-05-25T00:00:00,只有支持js5的实现支持这种格式
Date.UTC也同样返回表示日期毫秒数,参数分别为:年份、基于0的月份(一月份是0)、月中哪一天(1-31)、小时数(0-23)、分钟、秒及毫秒数,其中只有前两个参数是必须的。
例:
var someDate = new Date(Date.UTC(2000,0)); //2000年1月1日0时0分0秒 var someDate = new Date(Date.UTC (2000,0,1,15,23,23)); //2000年1月1日15时23分23秒
Date构造函数会模仿Date.parse和Date.UTC函数。
Date.now方法返回调用这个函数时的日期和时间毫秒数。在不支持的浏览器上面,可以使用+操作符获取Date对象时间戳
var start = +new Date(); var stop = +new Date();
日格式化方法
toDateString—以特定于实现的格式显示星期几、月、日、年
toTimeString—以特定于实现的格式显示时、分、秒和时区
toLocaleDateString—以特定于地区的格式显示星期几、月、日、年
toLocaleTimeString—以特定于实现的格式显示时、分、秒
toUTCString—以特定于实现的格式完整的UTC时间
与toLocaleString和toString一样,以上方法没有一个能够用来在用户界面中显示一致的日期信息。
RegExp类型,正则
语法:类似于Perl语法
var expression = / pattern /flags;
模式(pattern)部分可以是简单或复杂的正则表达式,每个表达式可以使用一个或多个标识符,支持以下3个标识符
g:全局模式,将被应用于所有字符串,而不是在匹配到第一个字符串后就停止,
i:表示不区分大小写,
m:表示多行模式,即达到一行文本末尾时,会继续查找下一行
注:模式中所有元字符都需要转义
元字符:( [ { \ ^ $ | } ? * + . ] )
以上方法是以字面量模式创建正则表达式
使用RegExp构造正则表达式
var partten = new RegExp(“bat”,”I”);
注:使用RegExp构造函数,所有元字符必须双重转义
例:/\[bc\]at/ ===> “\\[bc\\]at”
RegExp实例属性
global:布尔值,表示是否设置了g标志
ignoreCase:布尔值,表示是否设置了i标志
lastIndex:整数,表示开始搜索的下一个匹配项的字符位置,从0算起
multiline:布尔值,表示是否设置了m标志
source:正则表达式的字符串表示,按照字面量形式,而非传入构造函数中的字符串模式返回