假设有这样一个数组,其中 3 、1 、7都不止出现一次
let arr = [3, 7, 9, 1, 3, 2, 1, 1, 7]
现在要将多次出现的元素变为出现一次,即去除重复的元素,结果如下:
let arr = [3, 7, 9, 1, 2]
那你有多少种方式能实现这样的功能呢?还是让我来给你介绍六种方式吧
01
第一种方式就是利用 ES6的 Set 数据结构,以及用 from() 函数将类数组对象转化成数组
function removeRepeat1(arr) { return Array.from(new Set(arr))}
02
第二种方式不再使用第一种方式中的 from() 函数,而是利用扩展运算符(...)来将类数组对象转化成数组
function removeRepeat2(arr) { return [...new Set(arr)]}
03
第三种方式通过遍历整个数组,利用 indexOf() 方法判断元素的重复性
function removeRepeat3(arr) { let new_arr = [] for(let i in arr) { let item = arr[i] if(new_arr.indexOf(item) === -1) { new_arr.push(item) } } return new_arr}
04
第四种方式与第三种方式类似,区别就在于其利用 includes() 方法来判断元素的重复性
function removeRepeat4(arr) { let new_arr = [] for(let i in arr) { let item = arr[i] if(!new_arr.includes(item)) { new_arr.push(item) } } return new_arr}
05
第五种方式是利用 filter() 方法过滤掉重复元素实现的去重效果
function removeRepeat5(arr) { return arr.filter((value, index) => { return arr.indexOf(value) === index })}
06
第六种方式利用ES6中另一个新的数据结构 Map 来判断元素是否重复
function removeRepeat6(arr) { let map = new Map() let new_arr = [] for(let i in arr) { let item = arr[i] if(!map.has(item)) { map.set(item, true) new_arr.push(item) } } return new_arr}
今天的【JS面试题】就讲到这里啦,谢谢大家的阅读。