Set和Map数据格式

ES6 李丽红

我们以前学过的数据格式如 数组,json,在ES6中新增了两种数据结构:Set和Map数据格式

set数据格式

一、set数据结构:类似数组但不能有重复的值

let set=new Set(["a","b","c",]);
//set.add() 往set里面添加一项
set.add("d");
set.add("d").add("e").add("f");
//set.delete(); //删除一项
set.delete("b");

//set.has();判断有没有这个值,返回true或false
set.has("b"); //false

//set.size 属性,返回长度,类似length属性
//set.clear();清空

二、循环

let set1=new Set(["a","b","c","d"]);
// for..of
for (let item of set1.values()){console.log(item); }
for (let item of set1.keys()){console.log(item); }
for(let item of set1.entries()){console.log(item);}
for(let [k,v] of set1.entries()){console.log(k,v);}

//forEach()
set1.forEach((value,index)=>{
console.log(value,index);
});


三、数组去重

let arr=[1,2,3,1,3,3,4,5,6];
let newArr=[...new Set(arr)]; //返回(6) [1, 2, 3, 4, 5, 6] 是数组
let set3=new Set(arr); //返回Set(6){1, 2, 3, 4, 5, …} 是set数据格式
console.log("----------------------------");
console.log(set3[0]); //undefine,因为返回的不是数组
console.log(newArr[0]); //返回正确值1


Map数据格式

一、初始化

var map=new Map([["lina","lee"],["alen","xiao"],["name","wang"]]);

方法

//map.set(key,value) 设置key所对应的键值,然后返回整个Map结构,key,value可以是任何类型
map.set("lina","li"); //["lina","li"],["alen","xiao"] 如果key存在,重新赋值
map.set("age","18"); //["lina","li"],["alen","xiao"],["age","18"] 如果key不存在,则添加一项

//map.get(key) 读取key对应的值,如果找不到key,返回undefined
map.get("alen"); // li

//map.has(key) 返回一个boolean值,表示某个key是否存在于Map数据结构中
map.has("lina"); //true

//map.delete(key) 删除某个键,返回true,如果删除失败返回false
map.delete("lina"); //true


二、遍历的方法

//map.keys() 返回键名的遍历器
map.keys(); //MapIterator {"name", "age"}

//map.values(); 返回键值的遍历器
map.values(); // MapIterator {"wang", "18"}

//map.entries() 返回所有的键和其对应的值
map.entries(); //MapIterator {"name" => "wang", "age" => "18"}

//map.forEach()


三、与其他数据结构的相互转换

//转对象
function mapToObject(str) {
let obj=Object.create(null);
for(let [k,v] of str){
obj[k]=v;
}
return obj;
}
let myMap=new Map().set("name","lina").set("age","23");
mapToObject(myMap);

还能输出{{restrictNumber}}个字符  
  • {{reply.author}}

    {{CommonUtil.formateDate(reply.ac_CommentDate).shortTime}}
  • 回复了{{Comments.author}} :