ECMAScript 6 - Set Map

注:
部分方法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;

}

你可能感兴趣的:(ECMAScript 6 - Set Map)