zoukankan      html  css  js  c++  java
  • 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解析到哪里才会执行哪里

  • 相关阅读:
    jquery 序列化form表单
    nginx for windows 安装
    nodejs idea 创建项目 (一)
    spring 配置 shiro rememberMe
    idea 2018 解决 双击shift 弹出 search everywhere 搜索框的方法
    redis 在windows 集群
    spring IOC控制反转和DI依赖注入
    redis 的安装
    shiro 通过jdbc连接数据库
    handlebars的用法
  • 原文地址:https://www.cnblogs.com/comefuture/p/8305956.html
Copyright © 2011-2022 走看看