一、set数据结构
//set map ES6添加数据格式 array object
//set 类似于array 但是成员的值是唯一的
//map 类似于object
//数组
var arr = new Array(); //arr[0]
var o = new Object(); //o.name
var s = new Set();
s.add(1).add(2).add(3); //数据是唯一的
console.log(s);
//2种方式
var s2 = new Set([1,4,5,6,7,8,89,'8']);
//3种方式
var s3 = new Set();
[1,4,5,6,7,8,89,'8'].forEach((item)=>{
s3.add(item);
});
> 具体方法
add(1); //添加
s2.delete(name); //删除单个 按名称 返回true,false
s2.has(2); //判断是否是set的成员 返回有true false
s2.clear(); //清除全部 没有返回值
s2.size; //长度
代码演示:
var s2 = new Set([1,4,5,6,7,8,89,'8']);
s2.add(99); //添加
s2.delete(7); //删除单个 按名称 返回true,false
s2.has(2); //判断是否是set的成员 返回有true false
s2.size; //长度
s2.clear(); //清除全部 没有返回值
运行结果:
//转为数组 Array.from();
var s4 = new Set([1,4,5,2,56,6]);
let arr = Array.from(s4);
//另一种
var arr2 = [1,4,5,2,56,6];
var arr3 = Array.from(new Set(arr2)); //OK
//另简洁方法
[...new Set(arr2)]; //OK
//数组转为set数据结构
var arr4 = [1,4,5,2,56,6];
let s5 = new Set(arr4);
//循环 for of
var s6 = new Set([1,4,5,2,6,6]);
for(let v of s6.keys()){ //values(); entries()键值对
console.log(v);
};
s6.forEach((value,key)=>{
console.log(value,key);
});
二、map数据结构
//map
var m = new Map();
m.set('name','abc').set('age',18);
var b = {name:'b'};
m.set(b,'value');
>具体方法:
.set()
.get()
.has()
.delete()
.clear()
.size
代码演示:
var m = new Map([['name','abc'],['name2','abc2'],['name3','abc3']]);
s2.set('name4','abc4'); //添加
s2.delete('name2'); //删除单个 按名称 返回true,false
s2.has('name'); //判断是否是map的成员 返回有true false
s2.size; //长度
s2.clear(); //清除全部 没有返回值
运行结果:
//接受一个数组来作为参数
var m = new Map([['name','abc'],['name2','abc2'],['name3','abc3']]);
for(let v of m.keys()){ //values() entries() 键值对
console.log(v); //name name2 name3
};
for(let [key,value] of m){
console.log(key,value)
};
//其他结构的转换
//1、map转为数组
var m = new Map([['name','abc'],['name2','abc2'],['name3','abc3']]);
[...m.keys()];// ["name", "name2", "name3"]
[...m.values()];//["abc", "abc2", "abc3"]
[...m];//[['name','abc'],['name2','abc2'],['name3','abc3']];
//2、数组转换为map
var a = [['name','abc'],['name2','abc2'],['name3','abc3']];
new Map(a);
//3、Map转换为对象
var m = new Map([['name','abc'],['name2','abc2'],['name3','abc3']]);
var obj = {};
for(let [k.v] of m){
obj[k] = v;
};
console.log(obj);
//4、对象转为map
var obj2 = {flag:true,lists:'lists'};
var m2 = new Map();
for(let k in obj2){
m2.set(k,obj2[k]);
};