ES6-set && 数组剔重

set

Set:ES6中提供的新的数据结构set。特点:1.类似数组,属性值时唯一的!!2.Set本身是一个构造函数,用来生成数据结构,表现形式{1,"3",78},是个数据集合

  var s = new Set();
     s.add(1).add(2).add(3).add(3).add(NaN).add(NaN).add({}).add({});
     console.log(s);//Set {1, 2, 3, NaN, Object {}, Object {}}

【注意】:

  • 1.set里的成员是唯一的:所有只有一个3

  • 2.NaN在此是个特殊,也只能打印出一个NaN

  • 3.此处的对象是对应两个引用,所以是两个object

Set的属性和方法

属性:
  • 1.Set.prototype.constructor:构造函数,默认就是Set函数。

  • 2.Set.prototype.size:返回Set实例的成员总数。

方法:
  1. 1.add(value); 添加某个值,返回Set结构本身

  2. delete(value); 删除某个值,返回一个布尔值,表示删除是否成功

  3. has(value); 返回一个布尔值,表示该值是否为Set的成员4. clear(); 清除所有成员,没有返回值

试问:我们现在如何拿到其中一个任意值?

四种遍历的方法,用于遍历成员,配合for of使用

1.keys(); 返回一个键名的遍历器

2.values(); 返回一个键值的遍历器(这里的键值都是一个东西)

3.entries():返回一个键值对的遍历器

4.for in:使用回调函数遍历每个成员for in:使用回调函数遍历每个成员

 var md = new Set([1,43,56,"lalala"]);
    for(let item of md){
       console.log(item);
    }
     // 1
     // 43
     // 56
     // lalala

  

 

// keys(); 返回一个键名的遍历器

  let set = new Set(['red', 'green', 'blue']);
    for (let item of set.keys()) {
      console.log(item);
    }
    // red
    // green
    // blue

  

// values(); 返回一个键值的遍历器(这里的键值都是一个东西)

for(let item of set.values()){
               console.log(item);
            }
            // red
            // green
            // blue

  

// entries():返回一个键值对的遍历器

for(let item of set.entries()){
           console.log(item);
        }
        // ["red", "red"]s
        // ["green", "green"]
        // ["blue", "blue"]

  

【数组剔重】(几种方法)

// 源生的方法一:

 var arr=[3,5,7,8,10,4,2,3,3,3,4,2];
    var nArr = [];
       for(let i = 0; i < arr.length; i++){
          if(nArr.indexOf(arr[i]) === -1){
             nArr.push(arr[i]);
          }
       }
    console.log(nArr);//[3, 5, 7, 8, 10, 4, 2]

  

//源生的方法二

 var arr=[3,5,7,8,10,4,2,3,3,3,4,2];
    for(var i = 0; i < arr.length; i++){
       for(var j = i+1; j <arr.length; j++){
          if(arr[i]==arr[j]){
             arr.splice(j,1);
             j--;
          }
       }
    }
    console.log(arr);

  

//方法三:利用set里的值唯一的属性

  var arr99 = new Set(arr);
    console.log(arr99);//Set {3, 5, 7, 8, 10…}
    //再来解构一下,变成[]
    var arr88 = [...arr99];
    console.log(arr88);//[3, 5, 7, 8, 10, 4, 2]

  

原文地址:https://www.cnblogs.com/zhaowenxin/p/6160701.html