new Set() 学习介绍与对比

440 阅读1分钟
介绍:Set es6新推出的一种数据结构,他类似于数组,但是他的成员值都是唯一的,没有重复。

注意:唯一值表示数据类型相同

Set函数可以接收的参数可以是一个数组(或类似于数组的结构对象)作为参数用来初始化。

定义:

let list = new Set();

实例属性:size 返回当前Set的长度

实例方法:

  • add(value):添加某个值,返回Set结构本身。
  • delete(value):删除某个值,返回一个布尔值,表示删除是否成功。
  • has(value):返回一个布尔值,表示该值是否为Set的成员。
  • clear():清除所有成员,没有返回值

对比set 和 Array的优势域劣势

    let set = new Set();
    let arr = new Array();
    //增:
    set.add({'a': 1});
    arr.push({'a': 1});
    //查:
    console.log(set.has({'a': 1})); // false
    arr.find(item=>item.a); // {'a': 1}
    //改:
    set.forEach(item=>item.a?item.a=2:'');
    arr.forEach(item=>item.a?item.a=2:'');
    //删:
    set.forEach((item)=>item.a?set.delete(item):"");
    arr.splice(arr.findIndex(item=>item.a),1);
    console.log(set);
    console.log(arr);

set map object 对比 优势与劣势

    let item = {a: 1};
    let set = new Set();
    let map = new Map();
    let obj = new Object();
    //增
    set.add(item);
    map.set('a', 1);
    obj['a'] = 1;
    //查
    set.has(item);// true
    map.has('a');// true
    'a' in obj;// true
    //改
    item.a = 2;
    map.set('a', 2);
    obj['a'] = 2;
    //删
    set.delete(item);
    map.delete('a');
    delete obj['a'];
    console.log(set);
    console.log(map);
    console.log(obj);

总结:在开发过程中,涉及到数据结构,能使用Map 不使用Array 尤其是复杂的数据结构 ,如果对于数组的存储考虑唯一性使用Set,优先使用map 如果要求数据储存的唯一性使用Set 放弃使用Array。