1. parseInt() 函数
parseInt() 函数可解析一个字符串,并返回一个整数。
parseInt(string, radix):参数string表示要被解析的字符串,参数radix 表示要解析的数字的进制。当参数 radix 的值为 0,或没有设置该参数时,parseInt() 会根据 string 来判断数字的基数。如果 string 以 “0x” 开头,parseInt() 会把 string 的其余部分解析为十六进制的整数。如果 string 以 0 开头,那么 ECMAScript v3 允许 parseInt() 的一个实现把其后的字符解析为八进制或十六进制的数字。如果 string 以 1 ~ 9 的数字开头,parseInt() 将把它解析为十进制的整数。10进制遇到不是数字, 直接无视
parseInt("10"); //返回 10
parseInt("19",10); //返回 19 (10+9)
parseInt("11",2); //返回 3 (2+1)
parseInt("17",8); //返回 15 (8+7)
parseInt("1f",16); //返回 31 (16+15)
parseInt("010"); //未定:返回 10 或 8
parseInt("0x12",10); //返回 0
2.类数组对象:arguments
当我们在js中在调用一个函数的时候,我们经常会给这个函数传递一些参数,js把传入到这个函数的全部参数存储在一个叫做arguments的东西里面.
Javascript并没有重载函数的功能,但是Arguments对象能够模拟重载。Javascrip中每个函数都会有一个Arguments对象实例arguments,它引用着函数的实参,可以用数组下标的方式"[]"引用arguments的元素,arguments.length为函数实参个数,
3.正则表达式
1.正则对象及其属性
1)构造函数方式
var reg=new RegExp('abc','gi');
这里,第一个参数是正则的内容,第二个参数是修饰符,修饰符通常有三种,i,g,m,i表示的含义是忽略大小写进行匹配,g表示全局匹配即匹配到第一个之后不停止继续匹配,m表示多行匹配即遇到换行后不停止匹配继续直到被匹配字符串结束。
2)字面量方式
var reg=/abc/gi;
两个斜杠之间的是定义的正则内容,最后一个斜杠之后的是修饰符,这种方式比第一种简单高效,所以通常使用第二种方式来定义正则。
2.属性
可以看到它拥有global属性,该属性为布尔类型,用来表示该正则是否是全局匹配,ignoreCase属性,布尔类型,用来指示是否忽略大小写,lastIndex为number类型,用来表示上次匹配成功的位置,multiline,布尔类型,用来表示是否是多行匹配,source,string类型,用来表示正则的内容。
3.方法
通常对于一个正则对象来讲,我们能够使用的方法基本上有三个,即regObj.test , regObj.exec及regObj.compile
<script type="text/javascript">
//①test()判断字符串中是否出现某个字符串,返回布尔值
var re = /abc/;
var str = '00abc66';
console.log(re.test(str));
//②exec()查找并返回字符串中指定的某个字符串,只匹配一次
var re = /abc/;
var str = 'a0bc88abc00abc';
console.log(re.exec(str));
//③compile()方法用于改变正则匹配的内容
var re = /ab/;
var str = "aabcdef";
console.log(re.test(str)); //true
re.compile(/bd/);
console.log(re.test(str)); //false
re.compile('66');
console.log(re.test(str)); //false
</script>
以上就是正则对象及其方法,其实在使用的过程中,JS中的String类型的对象也拥有一些和正则相关的方法,如下:
<script type="text/javascript">
//①search()方法,返回符合条件的字符串首次出现的位置(下标)
var re = /abc/;
var str = '00abc66';
console.log(str.search(re));
//②match()方法,返回查找的结果,如果查询不到返回NULL
console.log(str.match(re));
//③replace()方法,将匹配到的内容替换成指定内容
console.log(str.replace(re,"*"));
//④split()方法,将字符串分割成字符串数组
console.log(str.split(re));
</script>
4.正则表达式的编写格式
1)、正则表达式的组成
①匹配符(查什么字符)
②限定符(查多少所匹配字符)
③定位符(查询范围)
④修饰符(附加规则)
2)、正则表达式子表达式相关
①子表达式
在正则表达式中,通过一对圆括号括起来的内容,我们就称之为“子表达式”。如:var re = /\d(\d)\d/;
②捕获
在正则表达式中,子表达式匹配到相应的内容时,系统会自动捕获这个行为,然后将子表达式匹配到的内容放入系统的缓存区中。我们把这个过程就称之为“捕获”。
③反向引用
在正则表达式中,我们可以使用\n(n>0,正整数,代表系统中的缓冲区编号)来获取缓冲区中的内容,我们把这个过程就称之为“反向引用”。
示例:
<script type="text/javascript">
var str = "d1122jj7667h6868s9999";
//查找AABB型的数字
console.log(str.match(/(\d)\1(\d)\2/)); //1122
//查找ABBA型的数字
console.log(str.match(/(\d)(\d)\2\1/)); //7667
//查找ABAB型的数字
console.log(str.match(/(\d)(\d)\1\2/)); //6868
//查找四个连续相同的数字
console.log(str.match(/(\d)\1\1\1/)); //9999
</script>
3)、匹配符
匹配量的:
*:匹配前面的子表达式零次或多次,0到多
+:匹配前面的子表达式一次或多次,1到多
?:匹配前面的子表达式零次或一次,0或1
{n}:匹配确定的 n 次
{n,}:至少匹配 n 次
{n,m}:最少匹配 n 次且最多匹配 m 次
匹配位置的:
^ (脱字符):匹配输入字符串的开始位置
$:匹配输入字符串的结束位置
匹配并且需要支持分组的时候需要括号来包裹:(匹配的模式)
匹配条件的:|, 表示或者
匹配集合的:[]
匹配非集合的:[^] 脱字符来表示取反的含义
4)、转义字符
因为在正则表达式中 . + \ 等属于表达式的一部分,但有时也需要匹配这些特殊字符,所以,需要使用反斜杠对特殊字符进行转义。
需要转移的字符:
点号.
小括号()
中括号[]
左斜杠/
右斜杠\
选择匹配符|
*
?
{}
+
$
^
4.indexOf() 方法:字符串首次出现的位置
indexOf() 方法可返回某个指定的字符串值在字符串中首次出现的位置。
语法:stringObject.indexOf(searchvalue,fromindex)
参数 描述
searchvalue 必需。规定需检索的字符串值。
fromindex 可选的整数参数。规定在字符串中开始检索的位置。它的合法取值是 0 到 stringObject.length - 1。如省略该参数,则将从字符串的首字符开始检索。
5.向数组开头添加元素
//利用concat
function prepend(arr, item) {
return [item].concat(arr);
}
//使用push.apply
//push表示末尾添加
function prepend(arr, item) {
var newArr=[item];
[].push.apply(newArr, arr);
return newArr;
}
//利用slice+unshift/splice
//slice表示从第一个位置开始取元素
//unshift()方法表示开头添加
//splice() 方法向/从数组中添加/删除项目,然后返回被删除的项目
function prepend(arr, item) {
var newArr=arr.slice(0);
newArr.unshift(item);//newArr.splice(0,0,item);
return newArr;
}
//使用join+split+unshift/splice组合
//join() 方法将数组中的所有元素放入一个字符串
//split() 方法用于把一个字符串分割成字符串数组
function prepend(arr, item) {
var newArr=arr.join().split(',');
newArr.unshift(item);//newArr.splice(0,0,item);
return newArr;
}
//普通的迭代拷贝
function prepend(arr, item) {
var newArr=[];
for(var i=0;i<arr.length;i++){
newArr.push(arr[i]);
}
newArr.unshift(item);
return newArr;
}
这四个都很常用返回值不一样,注意区别:
push() 在数组的末尾添加一个或多个元素 返回数组新长度
pop() 移除数组的最后一项,返回移除的项
shift() 移除数组的第一项,返回移除项
unshift() 在数组的第一项前面添加一个或多个元素,返回数组的长度