注:
部分方法ES6语法有浏览器解析差异,所以暂且以了解为主
SET
//Set 本身是一个构造函数,用来生成 Set 数据结构
var s = new Set(['a','b','c']);
s.add('d')
s.add('d')
s.add('d')
s.add('NaN')
s.add('NaN')
console.log(s) //["a", "b", "c", "d", "NaN" ] 不会添加重复值
Set函数的方法: delete
s.delete('a');
console.log(s) //[ "b", "c", "d", "NaN" ]
console.log(s.has('b')) //true
Set函数的方法: clear
s.clear();
console.log(s) //[]
set数组方法: forEach
var s = new Set(['a','b','c']);
s.forEach(function(item,index,set){
console.log(item,index,set) // set中item与索引值相同
})
set对象方法: keys
var s = new Set(['a','b','c']);
var keys = s.keys();
console.log(keys); //{"a", "b", "c"} 谷歌浏览器在 版本 71.0.3578.98(正式版本) (64 位)
//{ } 在火狐浏览器下,为空 版本64.0.2
var s = new Set(['a','b','c']);
var values = s.values();
console.log(values); //{"a", "b", "c"} 谷歌浏览器在 版本 71.0.3578.98(正式版本) (64 位)
//{ } 在火狐浏览器下,为空 版本64.0.2
应用范围,利用其不添加重复项目的特点,
例如:数组去重
var arr = [1,2,3,4,5,6,7,3,2,3,4,NaN]
var s = new Set(arr); //Set构造出来的是对象,但是不是数组
//console.log(arr instanceof Array);
arr = [...s] //将对象转化为数组,通过数据结构的方式完成
console.log(arr);
Map
var obj1 = {a:1};
var obj2 = {b:2};
var m = new Map([['a','b']]);
console.log(m) //Map { a → "b" }
console.log(m.get('a')) //b
m.set('a',1);
console.log(m.get('a')) //1
//m.delete('a')
m.has('a')
console.log(m.has('a')) //true
//m.clear();
m.set('a',1);
m.set('b',2);
m.set('c',3);
console.log(m)
m.forEach(function(item,index,map){
console.log(item);
})
var keys = m.keys();
console.log(keys.next()) //遍历出键名
console.log(keys.next()) //遍历出键名
console.log(keys.next()) //遍历出键名
console.log(keys.next()) //遍历出键名
https://www.babeljs.cn
//---函数参数默认值
function add(a,b=10){
return a+b;
}