zoukankan      html  css  js  c++  java
  • 【ES6】---JavaScript(二)

    一、数组中新增的方法

        1、Array.of()

    // Array.of():函数作用:将一组值,转换成数组
    var arr = Array.of(1,2,3,4);
    console.log(arr);// [1,2,3,4]
    

       2、Array from函数

    // Array.from:将伪数组转换为数组
    var aLi = Array.from(document.getElementsTagName("li"));
    console.log(aLi instanceof Array);
    

          3、Array.find()

    // 作用:通过条件查找数据,如果条件符合返回第一个符合条件的数据
    var arr = [1,2,3,4];
    var n = arr.find(function(item,index,array){
      return item>3;
    })
    
    console.log(n) // 4
    

      4、Array.findIndex()

    // 查找数组中符合条件的数据的下标,
    // 查找到返回相对应下标,没有查找到返回undefine
    var arr = [1,2,3,4];
    var n = arr.findIndex(function(item,index,array){
      return item>3;
    })
    
    console.log(n) // 3
    

       5、Array.fill()

    // 对数组进行填充
    // 语法:arr.fill("填充的值",开始下标,结束下标)
    
    var arr = [10,20,30,40];
    arr.fill("Alley",1,3);
    // [10, "Alley", "Alley", 40]
    

      

    二、for of && iterator

        1、for of

    /*
      for of循环 必须是遍历的可迭代的对象
      for of兼容性还不够,移动端安卓微信浏览器貌似不支持,Safari的可以;
      web端IE支持也不够,chrome可以。
      for in 循环 key值代表的是属性
      for of 循环 item代表的是值
    */
    
    var arr = [10,20,30,40];
    for(let item of arr){
      console.log(item);// 10 20 30 40
    }
    

      

     2、iterator

    /*
      iterator是一种机制,它是一种接口。为各种不同的数据结构提供了统一的
      访问机制。任何数据只要有了iterator接口,就可以完成遍历操作
    作用:
        1、为各种数据结构,提供统一接口,简便访问接口
        2、使数据结构的成员能够按照某种次序排列
        3、ES6新增的for of循环 iterator接口主要提供for of消费
    */
    
    // 手写iterator接口
    function iterator(arr){
        let index = 0;
        return {
            next(){
                if(index<arr.length){
                    return {value:arr[index++],done:false}
                }else{
                    return {value:undefined,done:true}
                }
            }
    
        }
    }
    
    var obj = [1,2,3,4];
    let it = iterator(obj);
    it.next();// {value: 1, done: false}
    it.next()// {value: 2, done: false}
    it.next();// {value: 3, done: false}
    it.next()// {value: 4, done: false}
    it.next()// {value: undefined, done: false}
    /*
     1、iterator遍历的过程:
       每一次调用next方法都会返回数据结构的当前成员信息,具体来说,
       就是返回一个包含value和done的属性对象,其中value属性是当前对象,
       done属性是一个布尔值,表示遍历是否结束
     2、ES6规定,凡是具有Symbol.iterator属性的数据结构都具有Iterator接口
     3、对象默认是没有Symbol.iterator属性的,因此如果想要进行遍历,必须手
     动添加
    */
    

       3、给对象添加iterator函数

    Object.prototype[Symbol.iterator] = function values() {
            console.log(this);
            var index = 0;
            var keys = Object.keys(this);
            var _this = this
            return {
                next() {
                    if(index < keys.length){
                       return { value: _this[keys[index++]], done: false };
                     }else{
                        return {value: undefined, done:true };
                          
                    }
                }
            }
        }
    
    
        var obj = {
            name: "张三",
            age: 19,
            sex: "男"
        }
    
    for(let value of obj){
        console.log(value);
    }
    

      

    三、函数
    1、函数参数默认值

    // ES6之前函数如何设定默认值
    function fn(x){
        var x = x || 0;
    }
    
    // ES6函数默认值
    function fn(x = 0){}
    // 如果传递了就用传递的参数,如果没有传递则x值等于0
    

          2、剩余参数

    function fn(a,...rest){
        console.log(...rest);// [2,3,4,5]
    }
    
    fn(1,2,3,4,5);
    // fn这个函数中 a接收对应参数1  ...rest以数组形式接收剩余参数
    

      3、箭头函数

    // 语法一:
      var fn = (a)=>{
          console.log(a);
      }
    // 简单的来说箭头函数就是将function 换成了()=>
    
     // 语法二:
     var fn = a=>a;
     // 当前函数意思为 返回函数a这个值,如果不写{}默认表示return
    
     //语法三:
        
     var fn = a =>({});
    // 当前函数意思为  返回一个对象
    
    /*
     箭头函数特点:
       1、没有this指向,this的指向会指向声明时离自己最近的那个作用域的对象
       2、箭头函数中没有arguments这个参数
       3、不能当做构造函数
       4、箭头函数不能当做generator函数
      */
    

      四、Set集合

        
    /*
     Set:集合
       1、它类似于数组,但成员的值是唯一的,没有重复的值,并且是无序的
       2、set是一个构造函数
       3、set每次执行完毕以后都会返回一个set,因此可以通过链式操作来进行
       操作
    */
    
    let s = new Set();
    //添加
    s.add("a").add("b"); 
        
    //删除 返回值是一个布尔值
    s.delete("a");
    
    //判断a是否为set的成员返回一个布尔值
    s.has("a");
    
    //清除所有,没有返回值
    s.clear();
    
    //返回所有键名
    s.keys();
    //返回所有value值
    s.values()
    
    //返回所有键值对
     s.entries() 
    
     //通过for of可以得到每一个值
    

      五、Map字典类型结构

    /*
      1、字典:用来存储不重复key的hash结构,不同于set集合,字典使
      用的[键,值]的形式来存储的
      2、map执行完毕后都会返回一个map因此可以进行链式操作
      3、特点:
      普通对象只能通过字符串来当做key值,但是Map可以用任意值来当做key值
    */
    
    1、创建map对象
      let map = new Map([
          ["a",1];
       ])
       console.log(map);// {"a"=>1}
    
        2、获取map长度
            map.size
    
        3、添加数组
            map.set("key",val);
    
        4、获取map值
            map.get("key")
    
        5、删除数据
            map.delete("key");
    
        6、判断当前map中是否存在某个值
            map.has("key");
    
        7、清除所有数据
            map.clear();
    
        8、获取所有map key值
            map.keys();
    
        9、获取所有map value值
            map.values()
    
        10、获取所有map键值对
            map.entries()
    
        11、遍历map对象
            forEach
    
     //注意:map中key值得顺序都是按照添加的顺序来排列的
    

      

    1、路在何方? 路在脚下 2、何去何从? 每个人都在探索,未来的方向在何处。如果说某些方向是世人已经公认的,那么就先按照公认的去走吧(ps:站在巨人的肩膀上看世界会清晰)。 如果说方向,当今世人还不清晰准确。那么就大胆往前走吧,对与错并不重要。心中的方向更加重要。
  • 相关阅读:
    (转)CSS3之pointer-events(屏蔽鼠标事件)属性说明
    Linux下source命令详解
    控制台操作mysql常用命令
    解决beego中同时开启http和https时,https端口占用问题
    有关亚马逊云的使用链接收集
    favicon.ico--网站标题小图片二三事
    网络博客
    Gitbook 命令行工具
    Markdown 轻量级标记语言
    SVN 集中式版本控制系统
  • 原文地址:https://www.cnblogs.com/yuanjili666/p/11683375.html
Copyright © 2011-2022 走看看