set
ES6 提供了新的数据结构 Set。它类似于数组,但是成员的值都是唯一的,没有重复的值。
var s = new Set();
set 使用object。is来判断两个值是否相等 但是专门针对0和-+0做了处理 在set里面默认他们是相等的
var a = new Set()
a.add(-0);
a.add(+0);
console.log(a)//Set(1){0}
增加 s.add(数据)添加一个 添加一个数据到集合的末尾 如果这个数字原本就存在 那么 就不进行任何操作
var s = nwe Set();
s.add(1);
s.add(2);
console.log(s)//Set(2) {1, 2}
查询 s.has(数据) 判断set集合中是否存在查询的数据,返回值为true和false
console.log(s.has(1))//true
删除 delete(数据) 对集合里的数据匹配删除成功就返回true 失败就放回false
var c = new Set()
c.add(1);
c.add(2);
console.log(c.delete(1)); true 表示匹配到数据 删除成功
console.log(c.delete(3)); false 表示没有匹配到数据 删除失败
console.log(c)//set(1){2}
清空 clear()里面不用传参数 清空整个集合
var c = new Set()
c.add(1);
c.add(2);
console.log(c.clera())//Set(0) {}
size 属性是获取set集合里面的所有元素的个数 基本上数组的长度类似
但是size是自读属性 不能重新赋值 如果重新赋值 不会起任何作用 也不会报错
console.log(z.size);
set集合的遍历
使用for-of进行遍历 返回的item是每一项的值
var s = nwe Set();
s.add(1);
s.add(2);
for (const item of s) {
console.log(item);//1,2
}
for each方法 foreach方法是集合的实例化方法但是set集合没有下表所有index和item都表示元素,s表示原数组
var s = nwe Set();
s.add(1);
s.add(2);
s.forEach((item, index, s) => {
console.log(item);//1,2
console.log(index);//1 2
console.log(s);/Set(2) {1,2}
})
filter方法 返回值是一个新数组 是用来检查数组中的元素是否符合某一条件 把符合条件的过滤出来,这个方法不会改变原数组
var arr = [1,2,3,4,5,6,7,8]
var res =arr.filter(function(item,index,self){
console.log(item);//元素
console.log(index);//元素下标
console.log(self);//arr数组
return item % 2 ==2;
})
console.log(res);//[2,4,6,8]
2map
一个 Object 的键只能是字符串或者 Symbols,但一个 Map 的键可以是任意值。
map用set方法来设置键和value
m.set(o."content")
map用set方法来获取属性value
m.get(o)//content
Map 的迭代
for…of
var myMap = new Map();
myMap.set(0, "zero");
myMap.set(1, "one");
for (var [key, value] of myMap) {
console.log(key + " = " + value);
}
//因为结构赋值的原因 元素与属性值相对应
/*
0 = zero
1 = one*/