//类似于数组 成员的值是唯一的 add()添加
//创建方式一:
const set = new Set();
set.add(2).add('2').add(4);
console.log(set);
//创建方式二:
var arr = [1,2,3,4,2,4,5,2,1,4,5,5,7];
const set2 = new Set(arr);
//创建方式三:
const set3 = new Set();
[2,34,2,4,5,2,4].forEach(item => set3.add(item));
//size 长度 去重后的长度
set.size
//delete() 删除
set.delete(3);
//clear() 清除所有
//has() 是否set成员 返回true false
set.has(1)
const set = new Set();
set.add(2).add('a').add(4);
var a = 'a';
if(set.has(a)){
console.log('ok');
};
//数组去重 转为数组
//一种写法
var arr = [1,2,3,4,2,4,5,2,1,4,5,5,7];
console.log([...new Set(arr)]);
//二种写法
var arr2 = new Set([1,2,3,4,2,4,5,2,1,4,5,5,7]);
[...arr2];
//三种写法 Array.from()
var arr2 = new Set([1,2,3,4,2,4,5,2,1,4,5,5,7]);
var arr3 = Array.from(arr2);
//循环 for of for in
//for...of 拥有者 array strings set map (iterator方法)
//for...in
//对象中获取的是key
var obj = {name:1,age:20};
for(var v in obj){
console.log(v) //name age console.log(obj[v]) ====1 20
};
//数组中获取的是索引
var arr = [1,2,3,4,5];
for(var v in arr){
console.log(v) //01234索引 console.log(arr[v]) 1,2,3,4,5
};
// for ..of 获取当前的值
var arr = [1,2,3,4,5];
for(var v of arr){
console.log(v);
};
//字符串
var str = 'hello';
for(var v of str){
console.log(v);
};
//set
var arr2 = new Set([1,2,3,4,2,4,5,2,1,4,5,5,7]);
for(let v of arr2){
console.log(v);
};
//遍历 方法 keys() value() entries()
var arr2 = new Set([1,2,3,4,2,4,5,2,1,4,5,5,7]);
for(let v of arr2.entries()){
console.log(v);
};
//filter() 过滤方法
var a = [1,2,3,4,2,4,5,2,1,4,5,5,7].filter(function(item,index){
return item >3
});
//获取交集
var arr1 = new Set([1,2,3,4,2,4,5,2,1,4,5,5,7]);
var arr2 = new Set([9,5,2,4,8]);
var arr3 = new Set([...arr1].filter(item => arr2.has(item))); // 2 4 5
//并集
var arr4 = new Set([...arr1,...arr2]);
//差集
var arr1 = new Set([1,2,3,4,2,4,5,2,1,4,5,5,7]);
var arr2 = new Set([9,5,2,4,8]);
var arr3 = new Set([...arr1].filter(item => !arr2.has(item))); //1 3 7
var arr3 = new Set([...arr2].filter(item => !arr1.has(item))); //9 8
//map 类似于对象 map的键可以是其它的类型 键值对
var m = new Map()
m.set('name','abc').set('age',20);
var name = 'name';
m.get(name);
//可以为其它类型
m.set(123,'123');
m.set(true,'124');
m.set(undefined,'124');
var a = {msg:'hello'};
m.set(a,'name');
m.get(a);
//has()
//delete()
//clear()
//size
// Map 可以接受一个数组作为参数
var m = new Map([['name','a'],['age',10],['a',3]]);
//keys() value() entries()
for(let [k,v] of m){
console.log(v)
};
for(let k of m.keys()){
console.log(k)
};
for(let v of m.values()){
console.log(v)
};
//扩展运算符
var m = new Map([['name','a'],['age',10],['a',3]]);
var m2 = [...m.keys()]; //["name", "age", "a"]
var m3 = [...m.value()]; //["a", 10, 3]
//类型转换
var m = new Map([['name','a'],['age',10],['a',3]]);
//map转为数组
[...m];
[...m.keys()];
[...m.value()];
//数组转为map
var m = new Map([['name','a'],['age',10],['a',3]]);
var m2 = [...m];
var m3 = new Map(m2);
//转为对象
var m = new Map([['name','a'],['age',10],['a',3]]);
var obj = {};
for(let [k,v] of m){
obj[k] = v;
};
console.log(obj);
//对象转为map
var obj2 = {msg:'hello',flag:true};
var m = new Map();
for(let k in obj2){
m.set(k,obj2[k])
};
//4、另一种方式 对象转map
function objToStrMap(obj) {
let m = new Map();
for (let k of Object.keys(obj)) { //name value for...of 不能遍历对象
m.set(k, obj[k]);
}
return m;
};
objToStrMap({name:1, value:2});
//Object.keys()
var obj2 = {msg:'hello',flag:true};
console.log(Object.keys(obj2)); //["msg", "flag"]
console.log(Object.values(obj2)); //["hello", true]
}
es6-set,map
猜你喜欢
转载自blog.csdn.net/zhujiarunm/article/details/83796016
今日推荐
周排行