SE6 Set

Set:ES6 新的数据结构,类似数组,但元素唯一
操作方法:
add(value)
添成员并返回Set本身
has(value)
通过 键 判断 成员 是否存在
size
返回成员数量
delete(value)
通过 键 移除 成员
clear()
清空所有成员
 
 
const obj1 = { name: "tom" };
const s = new Set();
console.log(s);
const s1 = s.add(obj1) // 添加成员并返回Set本身
console.log(s, s1);
console.log(s.has(obj1)); // 通过 键 判断 成员 是否存在
console.log(s.size); // 返回成员数量
s.delete(obj1) // 通过 键 移除 成员
console.log(s);
s.clear() // 清空所有成员
// 由于Set成员唯一性,所以没有get方法

 

遍历方法:

keys
返回 成员
values
返回 成员
entries
返回 [成员, 成员]
for of
返回 成员
forEach
返回 成员
 
const obj1 = { name: "tom" };
const obj2 = { name: "anne" };
const obj3 = { name: "jack" };
const s = new Set();
s.add(obj1)
s.add(obj2)
s.add(obj3)
console.log(s);

// keys():返回 成员
for (const item of s.keys()) {
  console.log(item)
}
// values():返回 成员
for (const item of s.values()) {
  console.log(item)
}
// entries():返回 [成员, 成员]
for (const item of s.entries()) {
  console.log(item)
}
// 返回 成员
for (const item of s) {
  console.log(item)
}
// 返回 成员
s.forEach(item => {
  console.log(item)
})

 

// 经典 Set 数组去重;Array.from 将类数组转换成数组
let ArrayHeavy = (arr) => { return Array.from(new Set(arr)) };
var arr = ["妹子", 1, 1, undefined, 2, 3, true, 4, 3, "男人", 8, 3, "妹子", undefined, true];
console.log(ArrayHeavy(arr));

 

// 字符串去重;...把Set元素解构塞进[]数组,然后join数组转字符串
var arr = [...new Set('aabbccdd')].join('')
console.log(arr); // abcd

 

// 空对象对应不同的内存地址,因此不是重复的数据
const s = new Set();
s.add({});
s.add({});
console.log(s); // Set(2) {{}, {}}

 

 
posted @ 2022-10-28 16:31  前端-大雄  阅读(39)  评论(0编辑  收藏  举报