es6数据结构Set

责编:menVScode 2018-02-23 13:45 阅读(502)

        集合的基本概念:集合是有一组无序且唯一(即不重复)的项组成的。这个数组结构使用了与有限集合相同的数学概念,应用在计算机的数据结构中。特点:key 和 value 相同,没有重复的 value。

        ES6 中提供了数据结构 Set。它类似与数组,但成员的值都是唯一的,没有重复的值。


        1、如何创建一个 Set,Set 是一个构造函数

// 构造函数里面可以指定一个参数,也可以不写。参数是一个数组
const data  = new Set([1,2,3]);
console.log(data) // Set {1, 2, 3}

        

        2、Set 类的属性:只有一个 size,类似数组中length

const data  = new Set([1,2,3]);
console.log(data.size) // 3


        3、Set 类的方法

        [1] set.add( value ):添加一个数据,返回 Set结构本身;

const data  = new Set([1,2,3]);
// 在创建Set数据结构的时候,直接指定数据之外,可以通过set.add()方式动态的往结构中添加值,还支持链式的添加。
data.add('a').add('b').add('c');
console.log(data); //Set {1, 2, 3, "a", "b", "c"}

        [2] set.delete( value ):删除指定数据,返回布尔值,表示删除是否成功;

const data  = new Set([1,2,3]);
data.add('a').add('b').add('c');
console.log(data.delete('a')) // true
console.log(data.delete('abc')) // false

        [3] set.has( value ):判断该值是否为 Set 的成员,返回一个布尔值;

const data  = new Set([1,2,3]);
data.add('a').add('b').add('c');
data.delete('a') // true
console.log(data.has('a')) // false

        [4] set.clear():清除所有数据,没有返回值;

const data  = new Set([1,2,3]);
data.clear();
console.log(data); // {}

        [5] keys():返回键名的遍历器

        [6] values():返回键值的遍历器

        Set 这种数据结构的键和值都是一样的

const data  = new Set([1,3]);
data.add('a').add('b');
console.log(data.keys()); // {1, 3, "a", "b"}
console.log(data.values()); // {1, 3, "a", "b"}

        [7] entries():返回键值对的遍历器

const data  = new Set([1,3]);
data.add('a').add('b');
console.log(data.entries()); // {[1, 1], [3, 3], ["a", "a"], ["b", "b"]}

        [8] forEach():使用回调函数遍历每个成员

const data  = new Set([1,3]);
data.add('a').add('b');
data.forEach(function(value,key,set){ // 3个参数:键名、键值、数据本身
    console.log(value) 
    console.log(key)
    //console.log(set) //{1, 3, "a", "b"}
})

        

        4、Set 数据结构是没有重复数据的,不允许有重复数据,可以利用这种特性进行数组去重

let arr = [1,2,1,'a','a']
const data  = new Set(arr);
console.log(data)
let newArr = data.values()
标签: Set es6
前端交流群: MVC前端网(menvscode.com)-qq交流群:551903636

邮箱快速注册

忘记密码