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:站在巨人的肩膀上看世界会清晰)。 如果说方向,当今世人还不清晰准确。那么就大胆往前走吧,对与错并不重要。心中的方向更加重要。
  • 相关阅读:
    SQLMAP注入教程-11种常见SQLMAP使用方法详解
    VS2012/2013/2015/Visual Studio 2017 关闭单击文件进行预览的功能
    解决 IIS 反向代理ARR URLREWRITE 设置后,不能跨域跳转 return Redirect 问题
    Spring Data JPA one to one 共享主键关联
    JHipster 问题集中
    Spring Data JPA 定义超类
    Spring Data JPA查询关联数据
    maven命名
    maven仓库
    Jackson读取列表
  • 原文地址:https://www.cnblogs.com/yuanjili666/p/11683375.html
Copyright © 2011-2022 走看看