ES6---Set数据结构
// Set数据结构:是es6中新增的一种数据结构,它类似与数据,单里面的数据都是唯一的,并且不能够通过索引获取对应的值
// Set本身是一个构造函数,用来生成Set数据结构
var arr = [1, 2, 3, 4, '韩信', '李白']
let setarr = new Set(arr)
console.log(setarr); // Set(6) {1, 2, 3, 4, "韩信", …}
console.log(setarr[3]);//undefined Set数据结构不能通过索引来获取元素
// Set数据结构常用的方法:
// 1.add(): 在Set数据对象的尾部添加一个元素,并返回这个Set对象
setarr.add('周瑜')
console.log(setarr); // Set(7) {1, 2, 3, 4, "韩信", …}
// 2. .size: 返回Set数据对象的长度大小
console.log(setarr.size); // 7
// 3. delete():删除Set数据对象中的一元素,返回一个布尔值表示是否删除成功
console.log(setarr.delete('韩信')); // true
console.log(setarr); // Set(6) {1, 2, 3, 4, "李白", …}
console.log(setarr.size); // 6
// 4. .clear: 清空Set数据对象,没有返回值
setarr.clear();
console.log(setarr);
// 5. has(): 返回一个布尔值,判断这个元素在Set对象中是否存在
console.log(setarr.has(1)); // false
// Set数据结构是可以遍历的
[1, 2, 3, 4, 5].map(item => setarr.add(item))
console.log(setarr);// Set(5) {1, 2, 3, 4, 5}
// 1..values() 返回一个新的迭代器对象,该对象包含Set对象中的按插入顺序排列的所有元素的值。
console.log(setarr.values()); // SetIterator {1, 2, 3, 4, 5}
// 2. 用forEach遍历Set结构数据
setarr.forEach(item => { console.log(item + 1); }) //2,3,4,5,6
// 3.用next()遍历
let it = setarr.values();
console.log(it.next());
console.log(it.next());
console.log(it.next());
console.log(it.next());
console.log(it.next());
console.log(it.next());
// 4. 用for...of遍历
for (let key of setarr) {
console.log(key); // 1,2,3,4,5
}
// 利用Set对数组去重
var arr1 = [1, 2, 3, 35, 232, 43, 5, 2, 35, 46, 23, 4, 3, 2, 2]
let arrset = new Set(arr1)
console.log(arrset);
// let Arrset = [...arrset]
let Arrset = Array.from(arrset)
console.log(Arrset);