ES6-set && 数组剔重

时间:2023-03-08 22:23:57

set

Set:ES6中提供的新的数据结构set。特点:1.类似数组,属性值时唯一的!!2.Set本身是一个构造函数,用来生成数据结构,表现形式{1,"3",78},是个数据集合

  var s = new Set();
s.add().add().add().add().add(NaN).add(NaN).add({}).add({});
console.log(s);//Set {1, 2, 3, NaN, Object {}, Object {}}

【注意】:

  • 1.set里的成员是唯一的:所有只有一个3

  • 2.NaN在此是个特殊,也只能打印出一个NaN

  • 3.此处的对象是对应两个引用,所以是两个object

Set的属性和方法

属性:
  • 1.Set.prototype.constructor:构造函数,默认就是Set函数。

  • 2.Set.prototype.size:返回Set实例的成员总数。

方法:
  1. 1.add(value); 添加某个值,返回Set结构本身

  2. delete(value); 删除某个值,返回一个布尔值,表示删除是否成功

  3. has(value); 返回一个布尔值,表示该值是否为Set的成员4. clear(); 清除所有成员,没有返回值

试问:我们现在如何拿到其中一个任意值?

四种遍历的方法,用于遍历成员,配合for of使用

1.keys(); 返回一个键名的遍历器

2.values(); 返回一个键值的遍历器(这里的键值都是一个东西)

3.entries():返回一个键值对的遍历器

4.for in:使用回调函数遍历每个成员​ for in:使用回调函数遍历每个成员

 var md = new Set([1,43,56,"lalala"]);
for(let item of md){
console.log(item);
}
// 1
// 43
// 56
// lalala

  

// keys(); 返回一个键名的遍历器

  let set = new Set(['red', 'green', 'blue']);
for (let item of set.keys()) {
console.log(item);
}
// red
// green
// blue

  

// values(); 返回一个键值的遍历器(这里的键值都是一个东西)

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

  

// entries():返回一个键值对的遍历器

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

  

【数组剔重】(几种方法)

// 源生的方法一:

 var arr=[3,5,7,8,10,4,2,3,3,3,4,2];
var nArr = [];
for(let i = 0; i < arr.length; i++){
if(nArr.indexOf(arr[i]) === -1){
nArr.push(arr[i]);
}
}
console.log(nArr);//[3, 5, 7, 8, 10, 4, 2]

  

//源生的方法二

 var arr=[3,5,7,8,10,4,2,3,3,3,4,2];
for(var i = 0; i < arr.length; i++){
for(var j = i+1; j <arr.length; j++){
if(arr[i]==arr[j]){
arr.splice(j,1);
j--;
}
}
}
console.log(arr);

  

//方法三:利用set里的值唯一的属性​

  var arr99 = new Set(arr);
console.log(arr99);//Set {3, 5, 7, 8, 10…}
//再来解构一下,变成[]
var arr88 = [...arr99];
console.log(arr88);//[3, 5, 7, 8, 10, 4, 2]