JavaScript高级程序设计(第3版)学习笔记11 内建(5)

reduce()从数组第一项开始,遍历至最后,reduceRight()从数组最后一项开始,遍历至第一项

  search()   接受一个参数,和match()相同,返回字符串中第一个匹配项的索引,没有找到匹配项时返回-1,search()始终从字符串开头向后查找  
lastIndexOf()   lastIndexOf()   reduceRight()   replace()   接受两个参数:一个RegExp对象或字符串和一个字符串或函数,若第一个参数为字符串,则只会替换第一个字符串,若想替换所有子字符串,第一个参数必须为指定了全局标志(g)的正则表达式  
                    判断方法   isArray()   静态方法,接受一个参数,返回这个参数是否为Array   split()  

基于指定的分隔符将一个字符串分割成多个字符串,并将结果放在一个数组中返回,分隔符可以是字符串,也可以是正则表达式。可选的第二个参数用于指定数组的最大长度

 

说明:

(1)上表中红色部分表示在ES5版本中新增的方法,蓝色部分为个人认为比较常用的属性和方法。

(2)ECMAScript中数组的每一项可以保存任意类型的数据,并且数组的大小可以随着数据的添加而自动的动态调整。

(3)使用Array构造函数创建数组时,如果传入一个数值类型的参数,则作为数组长度处理,如果这个数值小于0或者不是一个整数,会抛出RangeError异常(如果确实需要将这个数值作为数组第1项,可以使用数组字面量),其它数值类型的参数,则作为数组的第一项值处理,并且数值的长度值为1。

[code]
try{
var a = new Array(-2);
}catch(e)
{
console.info(e);//RangeError
}
//var g = new Array(1.1);异常
var b = new Array(0);
var c = new Array(2);
var d = new Array('data');
var e = [-2];
var f = new Array(-1,-2);

console.info(b.length);//0
console.info(c.length);//2
console.info(d.length);//1
console.info(e.length);//1
console.info(f.length);//2



(4)判断一个对象是否为数组时,在ES5中可以直接使用Array.isArray(obj), 在不支持isArray方法的环境中时,可以使用obj instanceof Array来判断只有一个作用域的情况,但是更加稳妥的判断方法是利用Array对象的内部属性[[Class]]来判断:

复制代码 代码如下:


function isArray(obj){
  return Object.prototype.toString.call(obj) == '[object Array]';
}


(5)关于String的slice()、sbustr()、substring(),如果只传入了第一个参数,则截取从第一个参数至末尾。当传入负参数时:

  A、slice()会将负参数加上字符串长度,使参数为正

  B、substr()会将负的第一个参数加上字符串的长度,将负的第二个参数转换为0

  C、substring()会将所有负参数转换为0,如果第2个参数小于第1个参数,会互换两个参数

(6)关于String对象replace()方法的第二个参数

如果是字符串,可以使用一些特殊字符将正则表达式操作得到的值插入到结果字符串中,这些特殊字符有:

字符序列   替换文本  
$$   $  
$&   匹配整个模式的字符串,与RegExp.lastMatch的值相同  
$'   匹配的子字符串之前的子字符串,与RegExp.leftContext的值相同  
$`   匹配的子字符串之后的子字符串,与RegExp.rightContext的值相同  
$n   匹配第n个捕获组的子字符串,其中n等于1~9,如果正则表达式中没有定义捕获组,则使用空字符串  
$nn   匹配第nn个捕获组的子字符串,其中n等于01~99,如果正则表达式中没有定义捕获组,则使用空字符串  

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wddsdw.html