介绍: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。