ES6 (Class类、数组新增的方法、数组的迭代、Set、Map)

class类

  • 本质上是构造函数的另一种写法
  • 类的原型:prototype
  • class类是通过constructor创建一个构造函数
  • 创建实例的方式依然是用new关键字
  • 这里面要想给原型添加方法,只要跟在constructor后面直接加就可以了,它也可以通过原型链添加方法
class Dog {
        constructor(name,sex){
            this.name=name;
            this.sex = sex;
        };
        height(e){
            console.log(this.name+'身长'+e);
        }
    }
    var pzj = new Dog("彭忠杰","公");
    console.log(pzj);
    pzj.height("18cm")
  • 它还具有继承属性,需要使用extends
    // 继承  extends
    class Fu {    // 创建父级构造函数
        constructor(money){
            this.money = money ;
        }
        yc(){     // 添加方法
            console.log("遗产"+this.money);
        }
    }
    var father = new Fu("$1000");   // 创建实例
    father.yc();

    class Er extends Fu {
        constructor(moneys,i){
            super(i);  // 继承
            this.moneys = moneys;
        };
        jc(){
            super.yc();   // 继承父亲的方法
        }
    }
    var son = new Er("100","$10000");  // 创建实例
    console.log(son);
    son.jc();

    class sun extends Er{
        constructor(muchMoney,a,b){
            super(a,b)   // 继承父级,其中一个指向Fu  一个指向Er
            this.muchMoney = muchMoney;
        };
        last(){
            super.yc();  // 继承yc这个方法
        }
    }
    var sunZi = new sun("100","$1000","$2000");
    console.log(sunZi);
    sunZi.yc();

数组Array相关

数组的扩展方式

扩展运算符[…arr]
  • 它可以将伪数组转换为真数组
  • 可以用于拼接数组
 // 伪数组转换为真数组     扩展运算符[...]
    var arr = document.querySelectorAll("ul li");
    console.log(arr);
    console.log([...arr]);

    // 连接数组
    var arr1 = [1, 5, 3, 4, 6, 7];
    var arr2 = [5, 6, 7, 8, 4, 2];
    console.log([...arr1, ...arr2]);
对象转数组 Array.from()

Array.from(需要转换的对象,function(item){return item})
注意:转换的对象要有length

 // 对象转数组   Array.from()
    var obj = {
        0: 4,
        1: 6,
        2: 5,
        3: 7,
        length: 4    // 必须要有
    };

    var arr3 = Array.from(obj, function (item) {
        return item * 1;
    })
    console.log(arr3);
find() 返回第一个符合条件的内容
   // find返回找到的第一个符合条件的内容  find(function(item,index){})
    var arr4 = [
        {
            name: "aa",
            age: 15
        },
        {
            name: "bb",
            age: 17
        },
        {
            name: "cc",
            age: 18
        },
        {
            name: "dd",
            age: 15
        },
    ];

    var a = arr4.find(function (r, i) {
        // return r.name === "aa"
        return r.age === 15;    // 只返回第一个符合条件的内容
    })
    console.log(a);

findIndex 返回第一个符合条件的索引,没有则返回-1
      // findIndex返回第一个符合条件的索引,如果没有返回-1

    var b = arr4.findIndex(function(r,i){
        // return r.name === "aa";
        // return r.age===14;
        return r.age===18;

    })
    console.log(b);
includes(内容) 查询数组中是否包含这个值,返回true/false
    // includes(内容)  查询数组中是否包含这个值 
    var arr5 = [5,3,4,6,1,2];
    console.log(arr5.includes(6));   // true
    console.log(arr5.includes(9));   // false

数组的遍历

  1. for循环
  2. for…in
  3. for…of
    var arr6 = [6,4,5,3,8,1,9,7];
    // 数组遍历  for...of  for...in for
    for(var i of arr6){
        console.log(i);
    }
    for(var k in arr6){
        console.log(k,arr6[k]);
    }
    for(var j = 0 ; j < arr6.length ; j ++){
        console.log(arr6[j]);
    }

数组的迭代方法

数组迭代方法中,每个方法中都要使用function,其中有三个参数(function(item,index,arr))

  • item:代表每个值
  • index:代表索引号
  • arr:代表原数组
forEach() 就相当于for循环,没有返回值
    // foreach 相当于for循环  打印出来总是undefined
    var kong = [];
    arr6.forEach(function(r,i,a){
        console.log(r*2);
        kong.push(r*2)
    })
    console.log(kong);
map() 数组的每个元素执行一次指定的函数,并返回处理后的数组
    // map 返回一个新数组  需要创建一个变量去接收
    var c = arr6.map(function(r,i,a){
        return r*3
    })
    console.log(c);
some() 查找数组中是否有符合条件的值,并返回true/false
    // some查找  返回true或者false
    var f = arr7.some(function(r,i,a){
        // return r>3;   // true
        return r>8;  // false

    })
    console.log(f);
filter() 过滤筛选数组中符合条件的值,并返回新的数组
    var d = arr7.filter(function(r,i,a){
        return r>3;
    })
    console.log(d);
  • 区别
    forEach、filter、map中的return不会终止循环
    some中的return会终止循环

Set、Map

Set 是构造函数,生成set数据类型,能够自动去重
  • set数据类型也可以通过扩展运算符转换为数组类型
  • set数据类型获取长度,通过size

set数据添加元素:add(添加的内容),可以连写
set数据删除元素:delete(要删除的内容)、clear()清除所有内容
set数据查找内容:find(查找的内容),返回true/false,只能查找单层的数据,查不到数组中的数组

    var arr = [1, 5, 3, 4, 6, 1, 3, 2, 4, 5, 6];
    // 会自动去重
    var set = new Set(arr);
    console.log(set);
    // [...]扩展运算符 可以转换为数组形式
    console.log([...set]);

    // 增删查 add delete/clear has
    // add 可以连用
    set.add(20).add([30]);
    console.log(set);

    // delete 删除一个 / clear删除全部
    set.delete(20);
    console.log(set);
    // set.clear();
    // console.log(set);

    // 查 has 返回true或者false
    console.log(set.has(2));  // true
    console.log(set.has(30));  // false  只可以查单层,如果是数组里包含数组,检查不到

Map 是构造函数,针对对象格式
  • map增加元素以及修改元素都是通过set进行,set(添加的键,添加的值)/ set(修改的键,修改的值)。可以连写
  • map删除元素通过delete:delete(要删除的键)
  • map查找元素通过get:get(查找的键)
// Map 针对对象格式
   var arr1 = [["key1","val1"],["key2","val2"],["key3","val3"]];
   // 增删改查
   var map = new Map(arr1);
   console.log(map);

   // 增 set  可以连用  改 set
   map.set("name","zs").set("name2","ls").set("key1","value1");
   console.log(map);

   // 删 delete(key)
   map.delete("name2");
   console.log(map);


   // 查 get(key)  返回值
   console.log(map.get("name"));

map与set的区别:

  • set数组中只操作一个值
  • map数组中要操作键和值
查找交集、并集、差集
        var arr1 = [2,5,6,3];
        var arr2 = [5,3,4,6,1,2,3,7,8,9]

        // 并集  将两个数组合并
        // var bj = [...arr1,...arr2];  // 没有去重
        // 要用到set构造函数
        var bj = [...new Set([...arr1,...arr2])]   // Set 能够自动去重
        console.log(bj);

        // 交集 就是两个之间相同的值,可使用filter进行过滤筛选,判断arr2中是否含有arr1里的每一个值
        var jj = arr1.filter(function(r,i,a){
            return new Set(arr2).has(r);
        })
        console.log(jj);

        // 差集 arr1和arr2中不同的值:并集的值去掉交集的值
        var cj = bj.filter(function(r,i,a){
            return !new Set(jj).has(r)
        })
        console.log(cj);

总结

数组的迭代方法是非常便捷的,但是要在熟悉的基础上才能去掌握,白天专门地去练习迭代方法时,并没有什么问题,但是在晚上做作业时,却发现自己除了forEach以外都不会使用。最后还是在同学的帮助下才有了进一步的理解。所以接下来自己就要多加练习,遇到数组就要往这些方法上靠。
现在再来回忆一下数组迭代方法的使用:

  • forEach其实就是一个for循环,这个是最容易理解的。
  • filter是对数组进行筛选,通过return将符合条件的数据返回出来,想要使用的话,需要一个变量去接收返回出来的数组
  • map就是通过制定的函数去处理数据,并能return出来,同样要想使用返回出来的数据,也需要一个变量去接收返回出来的数组
  • some是查找元素,它并不会返回出具体的数据,只会返回true或者false
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值