数组去重方法及算法

技术博客 (149) 2023-09-17 00:36:39

 

方法

一、利用ES6 Set去重(ES6中最常用)
二、利用for嵌套for,然后splice去重(ES5中最常用),双层循环,外层循环元素,内层循环时比较值。值相同时,则删去这个值。
三、利用indexOf去重,新建一个空的结果数组,for 循环原数组,判断结果数组是否存在当前元素,如果有相同的值则跳过,不相同则push进数组。
四、利用sort(),利用sort()排序方法,然后根据排序后的结果进行遍历及相邻元素比对。

算法

方法一

function removeRepeat(arr) { 
   
    	var newarr= arr.filter(function(element, index, arr) { 
   
       		 return arr.indexOf(element) == index;
       		 //return后面是数组的筛选条件,不是布尔值
    	});
    	console.log(newarr);
	}

indexOf找出数组中某个元素第一次出现的位置,
filter找出符合函数中条件的数组数据。

方法二

function removeRepeat(arr) { 
   
		var newarr = [];
	    for(var i=0; i<arr.length; i++) { 
   
	        if((newarr.indexOf(arr[i])) < 0) { 
   
	            newarr.push(arr[i]);
	        }
	    }
	    console.log(newarr);
	}

for循环遍历数组,定义一个新数组,indexOf<0来判断新数组中有没有某个值,没有就push进新数组。

方法三

function removeRepeat(arr) { 
   
		var newarr = [];
		var json = { 
   };
		for(let i = 0; i < arr.length; i++) { 
   
			if(!json[arr[i]]) { 
   
				json[arr[i]] = 1;  //标记arr[i]已经存在,只是标记作用
				newarr.push(arr[i]);
			}
		}
		console.log(newarr);
	}

遍历数组,定义一个新数组和对象,对象的索引为数组元素。

THE END

发表回复