1.ES6新增數據去重方法Setjavascript
let aa = [1, 2, "2", 4, 9, "a", "a", 2, 3, 5, 6, 5]; //Set數組簡單的去重 console.log([...new Set(aa)]); // [1, 2, "2", 4, 9, "a", 3, 5, 6] let s1 = new Set(); s1.add('a'); s1.add('a'); console.log(s1); //{"a"}
2.簡單去重方法java
思路:遍歷數組中的每個數據,判斷新數組中是否存在當前數據,如不存在加入數組
//簡單去重方法
uniq(aa); //[1, 2, "2", 4, 9, "a", 3, 5, 6]
3.數組下標判斷方法數據結構
思路:判斷當前數組的第i項第一次出現的位置是不是i位,如果,則不重複加入新數組spa
function uniq3(array) { let newarr = []; for (let i = 0; i < array.length; i++) { if (array.indexOf(array[i]) == i) { newarr.push(array[i]); } } return newarr; } console.log(uniq3(aa)); //[1, 2, "2", 4, 9, "a", 3, 5, 6]
4.相鄰排序法code
思路:給數組排序,僅加入不與相鄰的數組相同的數據對象
function uniq4(array) { array.sort(); console.log(array); let temp = [array[0]]; for (let i = 1; i < array.length; i++) { if (array[i] != temp[temp.length - 1]) { temp.push(array[i]); } } return temp; } console.log(uniq4(aa)); //[1, 2, 3, 4, 5, 6, 9, "a"]
5.雙層循環blog
思路:當內層循環檢測到跟外層循環同樣的值的時候,跳出內層循環,拋棄外層循環當前值,繼續下一次循環排序
function uniq5(array) { let temp = []; for (let i = 0; i < array.length; i++) { for (let j = i + 1; j < array.length; j++) { if (array[i] === array[j]) { ++i; } } temp.push(array[i]); } return temp; } console.log(uniq5(aa)); //[1, "2", 2, 3, 4, 5, 6, 9, "a"]
6.Object.keys()ip
思路:Object.keys()
方法會返回一個由一個給定對象的自身可枚舉屬性組成的數組,數組中屬性名的排列順序和使用 for...in
循環遍歷該對象時返回的順序一致
let obj = {};//key arr1.forEach(item => { obj[item] = 1; }); console.log(Object.keys(obj).map(o => Number(o)));//[1, 2, 3, 4, 5]