ES6 提供的最简方法–
1.扩展运算符+new Set()
1 2 3
| const arr = [1, 3, 5, 2, 3, 8, 4, 3]; const res = [...new Set(arr)]; console.log(res);
|
函数化写法
1 2 3 4 5 6 7
| function unique(arr) { return Array.from(new Set(arr)); } var arr = [1, 2, 2, 3, 5, 3, 6, 5]; var res = unique(arr); console.log(res);
|
1.indexOf 方法
新建一个数组,遍历要去重的数组,当值不在新数组的时候(indexOf 为 -1)就 push 到新数组中;
1 2 3 4 5 6 7 8 9 10 11 12
| function unique(arr) { var newArr = []; for (var i = 0; i < arr.length; i++) { if (newArr.indexOf(arr[i]) == -1) { newArr.push(arr[i]); } } return newArr; } var arr = [1, 2, 2, 3, 4, 4, 5, 1, 3]; var newArr = unique(arr); console.log(newArr);
|
indexOf() 方法可返回数组中某个指定的元素位置。
该方法将从头到尾地检索数组,看它是否含有对应的元素。开始检索的位置在数组 start 处或数组的开头(没有指定 start 参数时)。如果找到一个 item,则返回 item 的第一次出现的位置。开始位置的索引为 0。
如果在数组中没找到指定元素则返回 -1。
提示如果你想查找字符串最后出现的位置,请使用lastIndexOf() 方法。
1.利用对象的属性不能相同的特点进行去重
实现思路:
1.创建一个新的数组存放结果
2.创建一个空对象
3.for 循环时,每次取出一个元素与对象进行对比,如果这个元素不重复,则把它存放到结果数组中,同时把这个元素的内容作为对象的一个属性,并赋值为 1,存入到第 2 步建立的对象中。
说明:至于如何对比,就是每次从原数组中取出一个元素,然后到对象中去访问这个属性,如果能访问到值,则说明重复。
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| function unique(arr){ var res = []; var obj = {}; for(var i=0; i<arr.length; i++){ if( !obj[arr[i]] ){ obj[arr[i]] = 1; res.push(arr[i]); } } return res; } var arr = [1,2,2,3,5,3,6,5]; var res = unique(arr) console.log(res );
|
参考:
https://www.cnblogs.com/gaosirs/p/10677221.html
https://www.jb51.net/article/118657.htm
评论