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

  • 相关阅读:
    Web前端开发中的各种CSS规范
    SVN简明课程
    使用django-compressor压缩静态文件
    今日头条视频Url嗅探
    python 异常类型
    抓包分析工具备注
    电子签章盖章之jQuery插件jquery.zsign
    程序员读书雷达
    在csdn里markdown感受
    如何在无趣的世界里,做一个有趣的人?
  • 原文地址:https://www.cnblogs.com/comefuture/p/8305956.html
Copyright © 2011-2022 走看看