1. 双循环去重
var arr = [3, 6, 8, 9, 7, 4, 4, 7, 9, 8, 6, 3]; // 双循环去重 function clearRepeat(arr) { for (let i = 0; i < arr.length; i++) { let cur = arr[i] for (let j = i + 1; j < arr.length; j++) { if (cur == arr[j]) { arr.splice(j, 1); j-- } } } return arr; } let res = clearRepeat(arr); console.log(res);
2.递归去重
var arr = [3, 6, 8, 9, 7, 4, 4, 7, 9, 8, 6, 3]; // 递归去重 function toolFn(arr) { let ary = arr; let len = arr.length; ary.sort((a, b) => a - b); function clearRepeatDG(index) { if (index >= 1) { if (ary[index] === ary[index - 1]) { ary.splice(index, 1) } clearRepeatDG(--index) } } clearRepeatDG(len - 1); return ary; } let resDG = toolFn(arr); console.log(resDG);
方法2:
var arr = [1, 2, 3, 4, 5, 5, 4, 3, 2, 1, 0, 0, 1]; function outerFn(arr) { let newArr = []; let len = arr.length - 1; function fn(len) { if (len === 0) return; if (newArr.indexOf(arr[len]) === -1) { newArr.push(arr[len]); } fn(--len); } fn(len); return newArr; } var res = outerFn(arr); console.log(res);
3.利用对象的key具有唯一性去重
var arr = [3, 6, 8, 9, 7, 4, 4, 7, 9, 8, 6, 3]; // 利用对象的key具有唯一性去重 function useObjectFn(arr) { let obj = {}; let newArr = []; for (let i = 0; i < arr.length; i++) { let cur = arr[i]; obj[cur] = arr[i] } for (let key in obj) { newArr.push(obj[key]) } return newArr; } let resObj = useObjectFn(arr); console.log(resObj);
var arr = [3, 6, 8, 9, 7, 4, 4, 7, 9, 8, 6, 3]; // 常规写法 function useObjectFn2(arr) { let obj = {}; for (let i = 0; i < arr.length; i++) { let cur = arr[i]; if (obj[cur] === cur) { arr.splice(i, 1); i--; continue; } obj[cur] = cur; } return arr } let resObj2 = useObjectFn2(arr); console.log(resObj2);