海纳百川

ES6-Set篇

2019-08-16  本文已影响0人  凛冬已至_123

Set-ES6提供的一种新的数据结构

Set是一个构造函数,类似于Array; 但是 set 结构只能通过new Set来创建

特性

1.Set数据结构类似于数组,但是成员的值唯一。
2.由于 Set 结构没有键名,只有键值(或者说键名和键值是同一个值,key 和 value都是同一个值

const s = new Set();

[2, 3, 5, 4, 5, 2, 2].forEach(x => s.add(x));
console.log([...s])//[2,3,5,4]
set结构
//数组去重
const set = new Set([1, 2, 3, 4, 4]);
[...set]
// [1, 2, 3, 4]

// 例二
const items = new Set([1, 2, 3, 4, 5, 5, 5, 5]);
items.size // 5

//字符串去重
[...new Set('ababbc')].join('')
// "abc"

注意
向 Set 加入值的时候,不会发生类型转换,所以5和"5"是两个不同的值。Set 内部判断两个值是否不同,使用的算法叫做“Same-value-zero equality”,它类似于精确相等运算符(===),主要的区别是向 Set 加入值时认为NaN等于自身,而精确相等运算符认为NaN不等于自身。另外,两个对象总是不相等的

s.add(1).add(2).add(2);
// 注意2被加入了两次

s.size // 2

s.has(1) // true
s.has(2) // true
s.has(3) // false

s.delete(2);
s.has(2) // false
let set = new Set(['red', 'green', 'blue']);

for (let item of set.keys()) {
  console.log(item);
}
// red
// green
// blue

for (let item of set.values()) {
  console.log(item);
}
// red
// green
// blue

for (let item of set.entries()) {
  console.log(item);
}
// ["red", "red"]
// ["green", "green"]
// ["blue", "blue"]

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

for (let x of set) {
  console.log(x);
}
// red
// green
// blue
const s = new Set([1,2,3,4]);
console.log([...s])//[1, 2, 3, 4]

2.Array.from方法

const items = new Set([1, 2, 3, 4, 5]);
const array = Array.from(items);
console.log(array)//[1, 2, 3, 4, 5]

数组去重

function dedupe(array) {
  return Array.from(new Set(array));
}

dedupe([1, 1, 2, 3]) // [1, 2, 3]
上一篇下一篇

猜你喜欢

热点阅读