ES6新增类型 iterable
iterable是es6新增的类型,iterable类型的数据有,Array,Set,Map,Set和Map是es6新增的数据类型,
Array:数组,有序的元素序列
Set:ES6新增的数据结构,类似于数组,区别在于Set没有索引,并且Set中的元素都是唯一的
Map:ES6新增的数据结构,类似于对象,区别在于普通对象的key必须是字符串或者数字,而Map的key可以是任何数据类型
1.Set
1.1Set允许存储任何类型的唯一值,它类似于数组,但是成员的值都是唯一的,没有重复的值
1.2Set构造函数可以接受一个数组或者一个可iterable的数据类型作为参数,用来进行初始化
let set = new Set([1,2,3,4,5,1,{name:'lerry',age:22},['apple','bananas']])
1.3实例方法
size() 获取实集合中对象的个数
add(value) 向集合中添加一个对象value
delete(value) 删除集合中的一个对象value
has(value) 判断集合中是否包含对象value,包含返回true,不包含返回false
clear() 清空集合
keys() 获取到遍历key的迭代器对象
values() 获取到遍历values的迭代器对象
entries() 获取到遍历key-value的迭代器对象
forEach() 与数组的用法类似
let set = new Set([1,2,3,4,5])
console.log(set);//Set(5) { 1, 2, 3, 4, 5 }
console.log(set.size);//5
set.add(6)
console.log(set);//Set(6) { 1, 2, 3, 4, 5, 6 }
set.delete(5)
console.log(set);//Set(4) { 1, 2, 3, 4 }
console.log(set.has(1));//true
set.clear()
console.log(set);//Set(0) {}
console.log(set.keys());//[Set Iterator] { 1, 2, 3, 4, 5 }
console.log(set.values());//[Set Iterator] { 1, 2, 3, 4, 5 }
console.log(set.entries());//[Set Entries] { [ 1, 1 ], [ 2, 2 ], [ 3, 3 ], [ 4, 4 ], [ 5, 5 ] }
set.forEach((item,index) => {
console.log(item + '---' + index);
})
// 1---1
// 2---2
// 3---3
// 4---4
// 5---5
2、Map
2.1Map 数据类型。它类似于对象,也是键值对的集合,但是“键”的范围不限于字符串和数字,各种类型的值(包括对象)都可以当作键。也就是说,Object 结构提供了“字符串—值”的对应, Map 结构提供了“值—值”的对应,是⼀种更完善的 Hash 结构实现。如果你需要“键值对”的数 据结构,Map ⽐ Object 更合适。
let map = new Map([['name', '张三'], ['age', 12]]); //构建一个Map集合
console.log(map);//Map(2) { 'name' => '张三', 'age' => 12 }
// 获取map集合的键值对的个数
console.log(map.size);//2
// 给map集合设置键值对
map.set('gengder','nan')
console.log(map);
// get(key)通过key获取values
console.log(map.get('name'));
// has(key)判断集合中是否包含key指定的键
console.log(map.has('age'));
console.log(map.has('month'));
// delete(key)通过key删除⼀个键值对
map.delete('age')
console.log(map);
// clear()清空map集合
map.clear()
console.log(map);
// keys()获取遍历键的迭代器对象
console.log(map.keys());
// values()获取遍历值的迭代器对象
console.log(map.values());
// entries()获取遍历键值的迭代器·对象
console.log(map.entries());
map.forEach((item,index) => {
console.log(item + '----' + index);
})
2.2实例方法
size()获取map集合的键值对的个数
set(key,value) 设置map集合中的价值对
delete(key)删除集合中参数对应的键值对
get(key)通过key获取value
has(key),判断集合中是否有对应的键值对,返回布尔值
clear()清空集合
keys()获取遍历集合中键的迭代器对象
values()获取遍历集合中值的迭代器对象
entries()获取遍历集合中键值对的迭代器对象
forEach()跟数组,set的用法一样