持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第2天,点击查看活动详情
JavaScript——ES6新特性Map,Set和for...of循环
Map对象
Map 对象保存键值对。任何值(对象或者原始值) 都可以作为一个键或一个值。
//Map的定义和打印
var map=new Map([["张三",100],["李四,90],["王五",80]]);
var name=map.get("张三");
console.log(name);//通过Key获得value
//Map的添加和删除
map.set("神明",70); //添加
map.delete("张三"); //删除
Map的合并
//Map的合并
var map1 = new Map([[1, 'one'], [2, 'two'], [3, 'three'],]);
var map2 = new Map([[1, 'four'], [2, 'five']]);
var map3 = new Map([...map1, ...map2]);
//合并两个Map对象时,如果有重复的键值,则后面的会覆盖前面的,对应值即 four,five,three
Map的克隆
var map1 = new Map([[1, 'one'], [2, 'two'], [3, 'three'],]);
var map2 = new Map(map1);
console.log(map1 === map2); // false。
//Map对象构造函数生成实例,迭代出新的对象。
Set对象
Set 对象允许你存储任何类型的唯一值,无论是原始值或者是对象引用。Set 对象存储的值总是唯一的,是无序不重复的集合。
//Set对象定义和去重
var set = new Set([1,1,1,2,2,]);
console.log(set); //set{1,2} Set可以去重
//添加和删除
set.add(3);//set(3) {1,2,3}
set.delete(1);//set(2) {2,3}
//判断是否含有某个元素
set.has(2); //true
//并集
var set1 = new Set([1, 2, 3]);
var set2 = new Set([4, 3, 2]);
var set3 = new Set([...a, ...b]); // {1, 2, 3, 4}
//交集
var set1 = new Set([1, 2, 3]);
var set2 = new Set([4, 3, 2]);
var set3 = new Set([...a].filter(x => b.has(x))); // {2, 3}
//差集
var set1 = new Set([1, 2, 3]);
var set2 = new Set([4, 3, 2]);
var set3 = new Set([...a].filter(x => !b.has(x))); // {1}
for...of循环
for...of语句创建一个循环来迭代可迭代的对象。在 ES6 中引入的 for...of
循环,以替代 for...in 和 forEach() ,并支持新的迭代协议。for...of 允许你遍历 Arrays(数组), Strings(字符串), Maps(映射), Sets(集合)等可迭代的数据结构等。
语法: for (variable of iterable){ statement }
- variable:每个迭代的属性值被分配给该变量。
- iterable:一个具有可枚举属性并且可以迭代的对象
for...of测试
数组(Arrays)
var arr = [1,2,3,4,5]
for(var x of arr){
console.log(x)
}
//variable x
//iterable arr
Map(映射)
Map 对象就是保存 key-value(键值) 对。对象和原始值可以用作 key(键)或 value(值)。Map 对象根据其插入方式迭代元素。换句话说, for...of
循环将为每次迭代返回一个 key-value(键值) 数组。
var map = new Map(["张三",100],["李四",90],["王五",80]);
for(let x of map){
console.log(x)
}
Set(集合)
Set(集合) 对象允许你存储任何类型的唯一值,这些值可以是原始值或对象。 Set(集合) 对象只是值的集合。 Set(集合) 元素的迭代基于其插入顺序。 Set(集合) 中的值只能发生一次。如果创建一个具有多个相同元素的 Set(集合) ,那么它仍然被认为是单个元素。
var set = new Set([4,4,5,6,7])
for(let y of set){
console.log(x)
}