一、使用双重for循环 在早期双重for循环几乎是去重的唯一方式,但是双重for循环是比较笨拙的方法,它的时间复杂度是O(n^2),如果数组长度很大,那么将会非常耗费内存。//双重循环去重const handleRemoveRepeat = (arr) =>{for (let i=0,len = arr.length; i < len; i++) {for (let j = i + 1; j ...
二、利用for嵌套for,然后splice去重(ES5中最常用) function unique(arr){for(vari=0; i<arr.length; i++){ //自身数组从第1个开始循环for(varj=i+1; j<arr.length; j++){ //自身数组从第2个开始循环if(arr[i]==arr[j]){//第一个等同于第二个,splice方法删除第二个 //利用判断第一个是否等于...
方法五:利用indexOf以及forEach Array.prototype.distinct =function(){vararr =this, result=[], len=arr.length; arr.forEach(function(v, i ,arr){//这里利用map,filter方法也可以实现varbool = arr.indexOf(v,i+1);//从传入参数的下一个索引值开始寻找是否存在重复if(bool === -1){ result.push(...
方法五:使用对象属性 这种方法是一种巧妙的利用了对象属性的特性来去重的方法。我们可以将数组元素作为对象的属性来存储,并通过判断属性是否存在来去重。 ```javascript const arr = [1, 2, 3, 3, 4, 5, 5]; const uniqueArr = Object.keys(arr.reduce((acc, cur) => acc[cur] = true; return acc...
5.ES6中利用Set去重 此方法是所有去重方法中代码最少的方法,代码如下: vararr=[1,1,2,9,6,9,6,3,1,4,5];functionnewArr(arr){//方法一 Array.from()解析类数组为数组returnArray.from(newSet(arr));//方法二 es6的...解构return[...newSet(arr)];}console.log(newArr(arr))//再说一个字符串...
第3~7行代码遍历了旧数组arr,然后拿着旧数组元素去查询新数组,如果该元素在新数组中没有出现过,那么就添加到新数组中,否则不添加。其中第4行代码利用新数组的indexOf()方法,判断如果返回值为-1就说明新数组里面没有该元素。 二、利用splice()方法去重 splice()方法可以删除数组内容,用法为: splice(元素下标, ...
js中8种数组去重的方法 第一种: function deRepeat(arr){ var newArr=[]; for(var i=0;i<arr.length;i++){ if(newArr.indexOf(arr[i])==-1){//如果新的数组中没有这个值,就将其添加到新的数组中 newArr.push(arr[i]); } } return newArr;...
这个是目前最简单的去重方法,但是这个方法不支持对象方法,可以支持一些简单的数据格式去重效率还是很快的,如果是复杂数据格式建议用一下一些方法。 二.定义一个去重方法,直接调用。 新建一个数组,遍历传入数组,值不在新数组就push进该新数组中 function setarr(array){ ...
1.indexOf方法 实现思路:新建一个数组,遍历要去重的数组,当值不在新数组的时候(indexOf为-1) 就加入该新数组中; 2.调用indexOf方法 实现思路:如果当前数组的第i项在当前数组中第一次出现的位置不是i,那么表示第i项是重复的,忽略掉 3.Es6 set去重 ...
下面介绍七种常见的数组去重方法:1、借助ES6提供的Set结构 new Set()直接给一个新的数组里面,利用es6...