1.双重循环
实现方式一
function removeRepeat(arr) {
let newArr = [];
for(let i = 0; i <= arr.length; i++) {
let isRepeat = false;
for(let j = 0; j <= newArr.lenght; j++) {
if (arr[i] === newArr[j]) {
isRepeat = true;
break;//跳出循环
}
}
if(!isRepeat) {
newArr.push(arr[i]);
}
}
return newArr;
}
复制代码
实现方式二
function removeRepeat(arr) {
let newArr = [];
for(let i = 0; i < arr.length; i++) {
let isRepeat = false;
for(let j = i + 1; j < arr.length; j++) {
if (arr[i] === arr[j]) {
isRepeat = true;
break;//跳出循环
}
}
if(!isRepeat) {
newArr.push(arr[i]);
}
}
return newArr;
}
复制代码
实现方式三
function removeRepeat(arr) {
let newArr = [];
for(let i = 0; i < arr.length; i++) {
for(let j = i + 1; i < arr.length; i++) {
if (arr[i] === arr[j]) {
j = ++i; //先递增后赋值
}
}
}
return newArr;
}
复制代码
2.Array.prototype.indexOf
基本思想:通过数组的filter和indexOf,不是第一个索引值,就判定是重复值。
实现一:
- 通过数组的filter过滤功能
- indexOf返回第一个索引值
- 索引值与当前值相等,过滤进数组
function removeRepeatFour(arr) {
return arr.filter((item, index) => {
return arr.indexOf(item) === index;
})
}
let test = removeRepeatFour(allArr);
复制代码
实现方式二:
function removeRepeat (arr) {
let newArray = [];
arr.forEach(item => {
if (newArray.indexOf(item) === -1) {
newArray.push(item);
}
});
return newArray;
}
复制代码
3.Array.prototype.sort()
基本思想:对数组进行排列后,进行判断
实现方式一:
function removeRepeat (arr) {
const newArray = [];
arr.sort();
for (let i = 0; i < arr.length; i++) {
if (arr[i] !== arr[i + 1]) {
newArray.push(arr[i]);
}
}
return newArray;
}
复制代码
实现方式二:
function removeRepeat(arr) {
const newArray = [];
arr.sort();
for (let i = 0; i < arr.length; i++) {
if (arr[i] !== newArray[newArray.length - 1]) {
newArray.push(arr[i]);
}
}
return newArray;
}
复制代码
4.Array.prototype.includes()
function removeRepeat(arr) {
const newArray = [];
removeRepeat.forEach(item => {
if (!newArray.includes(item)) {
newArray.push(item);
}
});
return newArray;
}
复制代码
5.Map
实现方式一:
function removeRepeat (arr) {
const newArray = [];
const tmp = new Map();
for(let i = 0; i < arr.length; i++){
if(!tmp.get(arr[i])){
tmp.set(arr[i], 1);
newArray.push(arr[i]);
}
}
return newArray;
}
复制代码
实现方式二:
function removeRepeat(arr) {
const tmp = new Map();
return arr.filter(item => {
return !tmp.has(item) && tmp.set(item, 1);
})
}
复制代码
Set
Array.prototype.unique = function () {
return [...new Set(this)];
}
复制代码
注释:本篇文章仅作用于个人笔记所用,单纯整理知识供自己回看。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END