js高级教程阅读笔记 第五章-引用类型(5.5)

接上一节我们继续学习操作方法

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解析到哪里才会执行哪里

原文地址:https://www.cnblogs.com/comefuture/p/8305956.html