JavaScript之引用类型(二)


6.操作方法
        slice()能够基于当前数组中的一个或多个项创建一个新数组。slice()方法可以接受一或两个参数,即要返回项的起始和结束位置。在只有一个参数的情况下,slice()方法返回从该参数指定位置开始到当前数组结尾的所有项。如果有两个参数,该方法返回起始和结束位置之间的项——但不包括结束位置的项。
      注意:slice()方法不会影响原始数组。
      如果slice()方法的参数中有一个是负数,则用数组长度加上概述来确定相应的位置。如果结束位置小于起始位置,则返回空数组。
        splice()方法的主要用途是向数组的中部插入项,但是用这种方法的方式则有三种:
          删除:可以删除任意数量的项,要删除的第一项的位置和要删除的项数。
          插入:可以向指定位置插入任意数量的项,只需提供三个参数:起始位置、0(要删除的项数)和要插入的项。如果要插入多个项,可以再传入第四、第五,以致任意多个项。
          替换:可以向指定位置插入任意数量的项,且同时删除任意数量的项,只需指定3个参数:起始位置、要删除的项数和要插入的任意数量的项。插入的项数不必与删除的项数相等。
        splice()方法始终都会返回一个数组,该数组中包含从原始数组中删除的项(如果没有删除任何项,则返回一个空数组)。
7.位置方法
        两种:indexOf()和lastIndexOf()。
        这两个方法都接受两个参数:要查找的项和(可选的)表示查找起点位置的索引。其中,indexOf()方法从数组的开头(位置0)开始向后查找,lastIndexOf()方法则从数组的末尾开始向前查找。
8.迭代方法
        EMCAScript5为数组定义了5个迭代方法。每个方法都接收两个参数:要在每一项上运行的函数和(可选的)运行该函数的作用域对象——影响this的值。传入这些方法中的函数会接受三个参数:数组项的值、该项在数组中的位置和数组对象本身。
(1)every():对数组中的每一项运行给定函数,如果该函数对每一项都返回true,则返回true。【挨个儿嘛】
(2)filter():对数组中的每一项运行给定函数,返回该函数会返回true的项组成的数组。【过滤嘛,查询符合某些条件的所有数组项】
(3)forEach():对数组中的每一项运行给定函数。这个方法没有返回值。【对数组中每一项运行传入的函数】
(4)map():对数组中的每一项运行给定函数,返回每次函数调用的结果组成的数组。【适合创建包含的相遇另一个数组一一对应的数组】
(5)some():对数组中的每一项运行给定函数,如果该函数对任一项返回true,则返回true。【挑个嘛】
以上方法都不会修改数组中的包含的值
9.缩小方法
        两个缩小数组的方法:reduce()和reduceRight()
        这两个方法都会迭代数组的所有项,然后构建一个最终返回的值。reduce()方法从数组的第一项开始,逐个遍历到最后;reduceRight()则从数组的最后一项开始,向前遍历到第一项
        这两个方法都会接收到两个参数:一个在每一向上调用的函数和(可选的)作为缩小基础的初始值。传给reduce()和reduceRight()的函数接收4个参数:前一个值、当前值、值的索引和数组对象。
        这个函数返回的任何值都会作为第一个参数自动传给下一项。第一次迭代发生在数组的第二项上,因此第一个参数是数组的第一项,第二个参数就是数组的第二项。
        使用reduce()方法可以执行求数组中所有值之和的操作。

Date类型

        Date类型使用自UTC(Coordinated Universal Time,国际协调时间)1970年1月1日午夜(零时)开始经过的毫秒数来保存日期。
        创建一个日期对象,使用new操作符和Date构造函数即可。在调用Date构造函数而不传递参数时,新创建的对象自动获得当前的日期和时间。
咋根据创建特定日期和时间创建日期对象呢?
必须传入表示改日起的毫秒数。下面两个方法可以简化这个计算过程。
    (1)Date.parse()方法
        接受一个表示日期的字符串参数,然后尝试根据这个字符串返回响应日期的毫秒数。传入的字符串不表示日期会返回NaN。如果直接将表示日期的字符串传递给Date构造函数,也会在后台调用Date.parse()。
        将地区设置为美国的浏览器通常接受下列日期格式:
        ○“月/日/年”
        ○“英文月名,日,年”
        ○“英文星期几 英文月名 日 年 时:分:秒 时区”
        ○ISO 8601扩展格式YYYY-MM-DDTHH:mmss.sssZ。只有兼容ECMAScript5的实现支持这种格式。
        (2)DateUTC()方法
        参数为年份、基于0的月份(一月0,二月1,……)、月中的哪一天(1-31)、小时数(0-23)、分钟、秒以及毫秒数。前两个参数必需!
        如果第一个参数是数值,Date构造函数就会调用DateUTC()。
        (3)Date.now()方法,返回表示调用这个方法时的日期和时间的毫秒数。
1.继承的方法
        toString()、toLocaleString()和valueIf()方法。
2.日期格式化方法
        (1)toDateString()——以特定于实现的格式显示星期几、月、日和年
        (2)toTimeString()——以特定于实现的格式显示时、分、秒和时区
        (3)toLocaleDateString()——以特定于地区的格式显示星期几、月、日和年
        (4)toLocaleTimeString()——以特定于实现的格式显示时、分、秒
        (5)toUTCString()——以特定于实现的格式完整的UTC日期
3.日期/时间组件方法(这部分复制的别人的,不过都是这些东西嘛)
getTime() 返回表示日期的毫秒数,与valueOf()方法返回的值相同
setTime(毫秒) 以毫秒数设置日期,会改变整个日期
getFullYear() 取得四位数的年份
getUTCFullYear() 返回UTC日期的4位数年份
setFullYear(年) 设置日期年份,传入的年份值必须是四位数
setUTCFullYear(年) 设置UTC日期年份,传入的年份值必须是四位数
getMonth() 返回日期中的月份,0表示1月,11表示12月
getUTCMonth() 返回UTC日期中的月份,0表示1月,11表示12月
setMonth(月) 设置日期的月份,传入的月份值必须大于0,超过11则增加年份
setUTCMonth(月) 设置UTC日期的月份,传入的月份值必须大于0,超过11则增加年份
getDate() 返回日期月份中的天数(1到31)
getUTCDate() 返回UTC日期月份中的天数(1到31)
setDate(日) 设置日期月份中的天数,如果传入的值超过了该月中应有的天数,则增加月份
setUTCDate(日) 设置UTC日期月份中的天数,如果传入的值超过了该月中应有的天数,则增加月份
getDay() 返回日期中星期的星期几(0表示星期日,6表示星期六)
getUTCDay() 返回UTC日期中星期的星期几(0表示星期日,6表示星期六)
getHours() 返回日期中的小时数(0到23)
getUTCHours() 返回UTC日期中的小时数(0到23)
setHours(时) 设置日期中的小时数,传入的值超过了23则增加月份中的天数
setUTCHours(时) 设置UTC日期中的小时数,传入的值超过了23则增加月份中的天数
getMinutes() 返回日期中的分钟数(0到59)
getUTCMinutes() 返回UTC日期中的分钟数(0到59)
setMinutes(分) 设置日期中的分钟数,传入的值超过59则增加小时数
setUTCMinutes(分) 设置UTC日期中的分钟数,传入的值超过59则增加小时数
getSeconds() 返回日期中的 秒数(0到59)
getUTCSeconds() 返回UTC日期中的 秒数(0到59)
setSeconds(秒) 设置日期中的秒数,传入的值超过59则增加分钟数
setUTCSeconds(秒) 设置UTC日期中的秒数,传入的值超过59则增加分钟数
getMilliseconds() 返回日期中的毫秒数
getUTCMilliseconds() 返回UTC日期中的毫秒数
setMilliseconds(毫秒) 设置日期中的毫秒数
setUTCMilliseconds(毫秒) 设置UTC日期中的毫秒数
getTimezoneOffset() 返回本地时间与UTC时间相差的毫秒数

RegExp类型

ECMAScript通过RegExp类型来支持正则表达式。

var expression = / pattern / flags ;

        其中pattern部分是任何简单或复杂的正则表达式,可以包括字符类、限定符、分组、向前查找以及反向引用。每个正则表达式都可以带有一或多个标志,用以标明整得表达式的行为。
        正则表达式的匹配模式支持下列3个标志:
        g:表示全局模式,即模式将被应用于所有字符串,而非在发现第一个匹配项时立即停止
        i:表示不区分大小写模式,即在确定匹配项时忽略模式与字符串的大小写
        m:表示多行模式,即在到达一行文本末尾时还会继续查找下一行中是否存在与模式匹配的项
实例:

/*
*匹配字符串中所有“at”的实例
 */
 var pattern1 = /at/g;

/*
*匹配第一个“bat”或“cat”,不区分大小写
 */
 var pattern2 = /[bc]at/i;
 /*
*匹配所有以“at”结尾的3个字符的组合,不区分大小写
 */
 var pattern3 = /.at/gi;

        模式中使用的所有元字符都必须转义。
        正则表达式中的元字符:

( [ { \ ^ $ | ) ? * + . ] }

        另一种创建正则表达式的方式是使用RegExp构造函数,它接收两个函数:一个是要匹配的字符串模式,另一个是可选的标志字符串。可以使用字面量定义的任何表达式,都可以使用构造函数来定义。
        由于RegExp构造函数的模式参数是字符串,所以在某些情况下要对字符进行双重转移。
在这里插入图片描述
1.RegExp实例属性
    global:布尔值,表示是否设置了g标志。
    ignoreCase:布尔值,表示是否设置了i标志。
    lastIndex:整数,表示开始搜索下一个匹配项的字符位置,从0算起。
    multiline:布尔值,表示是否设置了m标志。
    source:正则表达式的字符串表示,按照字面量形式而非传入构造函数中的字符串模式返回。(保存的是规范形式的字符串,即字面量形式所用的字符串)
2.RegExp实例方法
    第一个是exce()方法,是专门为捕获组而设计的。接收要应用模式的字符串,然后返回包含第一个匹配项信息的数组;或者在没有匹配项的情况下返回null。返回的数组虽然是Array的实例,但包含两个额外属性:index和input。

    index表示匹配项在字符串中的位置,而input表示应用正则表达式的字符串。在数组中,第一项是与整个模式匹配的字符串,其他项是与模式中的捕获组匹配的字符串(如果模式中没有捕获组,则该数组只包含一项)。
    第二个方法是test(),他接受一个字符串参数。在模式与该参数匹配的情况下返回true;否则返回false。
这种用法经常出现在验证用户输入的情况下,因为我们只想知道输入是不是有效,至于他为什么无效就无关紧要了。
3.RegExp构造函数属性
在这里插入图片描述
4.模式的局限性
    ECMAScript正则表达式不支持的特性:
        匹配字符串和结尾的\A和\Z锚
        向后查找
        并集和交集类
        原子组
        Unicode支持
        命名的捕获组
        S和X匹配模式
        条件匹配
        正则表达式注释

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值