es6的学习(set结构数组去重)

现在es6逐渐成为了进入了前端开发的视野里,各大浏览器和流行的框架对es6的支持也非常好,之前看过几次阮一峰老师写的es6入门这本书,感觉非常不错,所以是时候再深入地去学习总结一下了。那么就先从set结构数组去重开始吧。
以前数组去重非常麻烦,我之前也总结过。那么就来总结一下数组去重有哪些方法吧。
1.使用set数据结构去重。(es6新方法)
先看一下set的定义:
***ES6 提供了新的数据结构 Set。它类似于数组,但是成员的值都是唯一的,没有重复的值。
Set 本身是一个构造函数,用来生成 Set 数据结构。

const s = new Set();
[2, 3, 5, 4, 5, 2, 2].forEach(x => s.add(x));
for (let i of s) {
  console.log(i);
}
// 2 3 5 4

封装一个数组去重函数(Array.from()转化数组的新方法)

function dedupe(array){
 return Array.from(new Set(array));
}
dedupe([1,1,2,3]) //[1,2,3]

扩展运算符(…)内部使用for…of循环

let arr = [1,2,3,3];
let resultarr = [...new Set(arr)]; 
console.log(resultarr); //[1,2,3]

2.利用indexOf以及forEach(利用下标去重法)

let arrResult = [];
arr.forEach(function(v,i,arr){
 let bool = arr.indexOf(v,i+1);
 // 也可以这样写,es6新出了一种校验数组是否包含一个成员的方法includes
 // 该方法的第二个参数表示搜索的起始位置,默认为0。如果第二个参数为负数,则表示倒   数的位置,如果这时它大于数组长度(比如第二个参数为-4,但数组长度为3),则会重置为从0开始。
 // let bool = arr.includes(v,i+1); i+1表示开始搜索的位置
 // if(bool){
 //    arrResult.push(v);
 //}
 // es6的includes这个方法很不错,在大部分时候可以替代indexOf();
 if(bool==-1){
 arrResult.push(v);
}
});
console.log(arrResult);

还有好多种方法,以后会逐一添加…

猜你喜欢

转载自blog.csdn.net/xiaolinlife/article/details/82657691