思路:分别用第一层与第二层for循环控制前一个数与后一个数,判断前后是否相等,若结果为true,则用数组方法splice删除一个数,并修正数组下标。
- // 1.双层for循环
- var arr = [1,1,2,3,5,4,7,7,'hello','hello']
- function unique(arr){
- // 控制第一个数
- for(let i = 0; i
length; i++){ - // 控制第二个数
- for(let j = i+1; j
length; j++){ - // 判断前后是否相等
- if(arr[i]===arr[j]){
- // 用splice删除一个数,会修改原数组
- arr.splice(j,1)
- // 修正下标
- j--;
- }
- }
- }
- return arr
- }
- console.log(unique(arr));
思路:先定义一个新数组来接收去重后的新数组,遍历原数组,若该元素在新数组中不存在,即indexOf 等于-1时,使用push方法将其添加入新数组中,最后返回这个新数组。
- // 数组去重(indexOf)
- var arr = [1,1,2,3,5,4,7,7,'hello','hello']
- function unique(arr) {
- var res = []
- for (var i = 0; i < arr.length; i++) {
- if (res.indexOf(arr[i]) == -1) {
- res.push(arr[i])
- }
- }
- return res
- }
- console.log(unique(arr));
思路:与indexOf方法一样,只是将indexOf改为lastindexOf。
- var arr = [1,1,2,3,5,4,7,7,'hello','hello']
- lastIndexOf()
- function unique(arr){
- let newarr = []
- // lastIndexOf(要寻找的参数,要开始寻找的索引)
- for(let i = 0; i
length; i++){ - if(newarr.lastIndexOf(arr[i])===-1){
- newarr.push(arr[i])
- }
- }
- return newarr;
- }
- console.log(unique(arr));
思路:先定义一个新数组来接收去重后的新数组,遍历原数组,判断原数组的元素在新数组中是否存在,若为false,则将其使用push方法添加进新数组,并返回新数组。
- var arr = [1,1,2,3,5,4,7,7,'hello','hello']
- // includes(元素值) 方法用来判断一个数组是否包含一个指定的值,如果是返回 true,否则false。
- function unique(arr){
- newarr = [];
- for(let i = 0; i
length; i++){ - if(!newarr.includes(arr[i])){
- newarr.push(arr[i]);
- }
- }
- return newarr;
- }
- console.log(unique(arr));
思路:先定义一个新数组来接收去重后的新数组,使用forEach方法遍历原数组,若该元素在新数组中不存在,即indexOf 等于-1时,使用push方法将其添加入新数组中,最后返回这个新数组。
- var arr = [1,1,2,3,5,4,7,7,'hello','hello']
- // forEach(遍历)+indexOf
- function unique(arr){
- let newArr = [];
- arr.forEach(function(item){
- if(newArr.indexOf(item) === -1){
- newArr.push(item);
- }
- })
- return newArr;
- }
- console.log(unique(arr));
思路:先定义一个新数组来接收去重后的新数组,利用 filter 过滤并配合 indexOf 查找元素最后返回这个新数组。
- var arr = [1,1,2,3,5,4,7,7,'hello','hello']
- // 用filter+indexOf/includes
- function unique(arr){
- let newArr = [];
- return arr.filter(function(item){
- return newArr.includes(item)?"":newArr.push(item)
- })
- return newArr;
- }
- console.log(unique(arr));
思路:set是Es6提供的一种新的数据结构,类似于数组,但set里面的值不重复,也就是说值唯一,因此可以直接用来数组去重。
- var arr = [1,1,2,3,5,4,7,7,'hello','hello']
- // set去重 成员是唯一的
- let set=new Set(arr);
- console.log(set);