js中delete是es6_js中ES6的Set的基本用法

ES6 提供了新的数据结构 Set。它类似于数组,但是成员的值都是唯一的,没有重复的值。

const s = new Set();

[2,3,5,4,5,2,2].forEach(x => s.add(x));

// Set结构不会添加重复的值

for(let i of s) {

console.log(i);

}

// ## 初始化

// 例一 可以接受一个数组作为参数

const set = new Set([1,2,3,4,4,]);

// ...将一个数组转为用逗号分隔的参数序列

console.log([...set]);

// 例二

const items = new Set([1,2,3,4,5,5,5,5,]);

console.log(items.size);

// 例三 可以接受具有iterable接口的其他数据结构作为参数

const set2 = new Set(document.querySelectorAll('div'));

console.log(set.size);

// 类似于

const set2 = new Set();

document

.querySelectorAll('div')

.forEach(div => set.add(div));

console.log(set.size);

// set中NaN等于自身,其余比较相当于 ===

let set3 = new Set();

let a = NaN;

let b = NaN;

set3.add(a);

set3.add(b);

console.log(set3)

// 两个对象总是不相等的

let set4 = new Set();

set4.add({}); // 1

console.log(set4.size);

set4.add({}); // 2

console.log(set4.size);

const s = new Set();

s.add(1).add(2).add(2);

console.log(s.size);

console.log(s.has(1));

console.log(s.has(2));

console.log(s.has(3));

s.delete(2);

console.log(s.has(2));

// set转数组

const items = new Set([1,2,3,4,5]);

const array = Array.from(items);

console.log(array);

// 去除数组重复成员

function dedupe(array) {

return console.log(Array.from(new Set(array)));

}

dedupe([1,1,2,3]);

let set = new Set(['red', 'green', 'blue']);

// 返回键名

for(let item of set.keys()) {

console.log(item);

}

// 返回键值

for(let item of set.values()) {

console.log(item);

}

// set 键名=键值

// 返回键值对

for(let item of set.entries()){

console.log(item);

}

// 可以直接用 for of遍历Set

// for in 和 for of的区别是:in 是遍历对象,of是遍历值

for (let x of set) {

console.log(x);

}

// set也有forEach()方法

set.forEach((value, key) => console.log(key + ' : ' + value));

// 此处forEach方法的参数是一个处理函数。

// 数组的 map 和 filter 方法也可以间接用于Set

let s = new Set([1,2,3]);

// map 将原数组映射成新数组

s = new Set([...s].map(x => x * 2));

console.log(s);

// filter返回过滤后的新数组

s = new Set([...s].filter(x => (x % 3) ==0));

console.log(s);

// 实现并集、交集、差集

let a = new Set([1,2,3]);

let b = new Set([4,3,2]);

let union = new Set([...a, ...b]);

console.log(union);

let intersect = new Set([...a].filter(x => b.has(x)));

console.log(intersect);

let difference = new Set([...a].filter(x => !b.has(x)));

console.log(difference);

// 在遍历操作中,同步改变原来的Set结构的两种变通方法

// 1.利用原Set结构映射出一个新的结构,然后赋值给原来的Set结构

let set1 = new Set([1,2,3]);

set1 = new Set([...set1].map(val => val *2));

console.log(set1);

// 2.利用Array.from

let set2 = new Set([1,2,3]);

set2 = new Set(Array.from(set2, val => val * 2));

console.log(set2);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值