let array = [1, 2, 2, "2", "2", "", "", 3, 6, 8, 6, 0, "a", "c", "h", "b"]; let res = []; // 新建一个空的结果数组,for 循环原数组,判断结果数组是否存在当前元素,如果有相同的值则跳过,不相同则push进数组。 for (let i = 0; i < array.length; i++) { if (res.indexOf(array[i]) == -1) { res.push(array[i]); } } // 双层循环,外层循环元素,内层循环时比较值。值相同时,则删去这个值。 for (let i = 0; i < array.length; i++) { for (let j = i + 1; j < array.length; j++) { if (array[i] == array[j]) { //第一个等同于第二个,splice方法删除第二个 array.splice(j, 1); j--; } } } // 利用sort()排序方法,然后根据排序后的结果进行遍历及相邻元素比对。 let arr = array.sort(); let kkk = [array[0]]; for (let i = 1; i < arr.length; i++) { if (arr[i] !== arr[i - 1]) { kkk.push(arr[i]); } } // for和includes let kkk = []; for (let i = 0; i < array.length; i++) { if (!kkk.includes(array[i])) { //includes 检测数组是否有某个值 kkk.push(array[i]); } } // filter和indexOf const bbb = array.filter((item, index, arr) => { // 也就是在遍历数组的时候,每次拿当前的元素跟此数组中这个元素第一次出现的位置相比, // 如果位置是一致的,就返回当前元素 return array.indexOf(item, 0) === index; }); console.log(bbb); // 递归 const aaa = array; const len = aaa.length; // 先排序 aaa.sort(function (a, b) { return a - b; }); function loop(index) { if (index >= 1) { if (aaa[index] === aaa[index - 1]) { aaa.splice(index, 1); } loop(index - 1); } } loop(len - 1); console.log(aaa); // for和map let ddd = []; let map1 = new Map(); for (let i = 0; i < array.length; i++) { if (map1.has(array[i])) { //判断是有有重复的 有返回true map1.set(array[i], true); } else { map1.set(array[i], false); ddd.push(array[i]); } } // new Set() console.log([...new Set(array)]);
原文:https://www.cnblogs.com/zhangxiaoqiong/p/13684932.html