接上一节我们继续学习操作方法
splice():英文是剪切的意思,这个方法是非常强大的方法。它有三种使用场景。
- 删除:传入2个参数,分别代表要删除的第一项和删除的项数。
- 插入: 传入3+n个参数。首先前两个参数是起始值,和要删除项0(这里只能为0,因为只是插入,如果不为0,就是下面的第三种情况了)。接下来的第三个参数~第n个参数是你要插入的选项,数量任意。
- 替换:与插入不同的就是第二个参数不为0.
实例:
// 删除
var colors = ['red','blue','black',];
var remove = colors.splice(0,1); //删除了red
alert(remove); //还剩下blue和black
//插入
var insert = colors.splice(1,0,'1','2');
alert(insert); //这里会返回一个空数组,因为splice方法会返回一个数组,这个数组是删除项的集合。insert中删除项为0,所以返回空数组。
alert(colors);
//替换
var replace = colors.splice(1,1,'haha','huohuo');//删除和替换项不必一致
alert(colors);
位置方法
js提供的位置方法是indexOf()和lastIndexOf(),两个方法都是查找数组中的指定项,区别在于一个从前往后,一个从后往前。
参数有两个,分别是必选的要查找的项和可选的起始位置。
两个方法都会返回查找的项,如果没有则返回-1.
查找使用(===)。
实例:
var num = [1,2,3,4,5,6,5,4,3,2,1];
var myNum = num.indexOf(4);
alert(myNum); //返回3,在数组下标的第三项
myNum = num.lastIndexOf(4);
alert(myNum); //返回7,在数组下标的第七项
myNum = num.indexOf(4,1);
alert(myNum); //返回3,从查询起始点1开始的第三项
迭代方法
- every():每一项都返回true,结果才返回true
- filter()
- forEach()
- map()
some():只要有一项返回true,就返回true
每个方法都有两个参数:
运行在每一项的函数:(每一项的值,位置,数组本身)
(可选)作用域的范围实例:every()和some()
var num = [1,2,3,4,5,4,3,2,1];
var result = num.every(function(item,index,array){
return item>2;
});
alert(result); //返回false
result = num.some(function(item,index,array){
return item>2;
});
alert(result);//返回true
实例:filter():利用函数返回数组中是否包含某一函数项
var num = [1,2,3,4,5,4,3,2,1];
var result = num.filter(function(item,index,array){
return item>2;
});
alert(result);//返回:3,4,5,4,3
实例:map()对每一项进行函数运算的到的结果
实例:
var num = [1,2,3,4,5,4,3,2,1];
var result = num.map(function(item,index,array){
return item*2;
});
alert(result);//返回2,4,6,8,10,8,6,4,2
实例:forEach():只是对数组的每一项进行传入函数,并不会有返回值。
var num = [1,2,3,4,5,4,3,2,1];
var result = num.forEach(function(item,index,array){
//操作
});
缩小方法
- reduce():从前向后遍历
- reduceRight():从后向前遍历
该函数有两个参数:作用在每一项的函数方法,作为缩小基础的初始值(可选)
var num = [1,2,3,4,5,4,3,2,1];
var result = num.reduce(function(prev,cur,index,array){
return prev+cur;
});
alert(result); //25
Date类型
语法:
var data = new Date();//获得当前时间和日期
RegExp类型
js通过RegExp来支持正则表达式。
基本语法;
var expression = /pattern/flags
正则表达式匹配模式下支持的三个标志
- g:全局模式,即应用于所有的字符串
- i:区分大小写模式
- m:多行模式
元字符(放在pattern中的):
匹配方式 | 解释 |
---|---|
[abcd] | 匹配任意abcd字符 |
[a-h] | 匹配a-h间的字符 |
[^abc] | 不与abc匹配 |
$ | 以指定字符结束 |
^ | 以指定字符开始 |
以上只是部分,想要了解更多,点击链接
下面我们来一些代码更直观的感受
var pattern = /.a/gi;
//使用'/'来进行转义。该句表示的是以a结尾的字符组合,全局和不区分大小写
var pattern = /[ab]c/g;
//全局匹配ac或者bc
Function类型
js中的函数也是对象,都是Function类型的实例。
所以我们经常在js中看到这样来定义函数:
var fun = function(){
//执行函数
};
ps:js函数名只是指针,所以同一个函数可以有许多函数名:
var a = function(){
1
}
var b = a;
var c = b;
alert(c);//输出1
ps:js没有重载
解析器会优先解析函数的申明,然后再解析到代码行的时候才会解析表达式
在开始解析的时候,js会利用申明提升的过程,把函数的声明提升在js树的顶部
实例:
alert(sum(10,10)); //可以执行,输出20
function sum(x,y){
return x+y;
}
ps:但是函数表达式就不行,因为对于表达式,它语句而已,js解析到哪里才会执行哪里