//删除后面的 即第 j个位置上的元素 删除个数 1 个 arr.splice(j,1); // j--很关键的一步 如果删除 程序就会出错 //j--的原因是 每次使用splice删除元素时 返回的是一个新的数组 // 这意味这数组下次遍历是 比较市跳过了一个元素 /* 例如: 第一次删除后 返回的是 1 1 3 2 1 2 4 * 但是...
最后总结:正常number和字符串类型以上几种方法都能遍历掉, 而只有第三、四、五、六、七种方法将NaN值过滤掉了,而同时能把对象值遍历掉的只有第四和第七种方法去判断对象中是否存在某个相同属性,然后遍历掉,得到去重后的效果。还有大家如果有更好的数组去重效果可以补充,互相学习进步...
arra.distinct();//返回[3,4,2,1] 方法二:利用splice直接在原数组进行操作 双层循环,外层循环元素,内层循环时比较值 值相同时,则删去这个值 注意点:删除元素之后,需要将数组的长度也减1. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 Array.prototype.distinct =function(){ vararr =thi...
第3~7行代码遍历了旧数组arr,然后拿着旧数组元素去查询新数组,如果该元素在新数组中没有出现过,那么就添加到新数组中,否则不添加。其中第4行代码利用新数组的indexOf()方法,判断如果返回值为-1就说明新数组里面没有该元素。 二、利用splice()方法去重 splice()方法可以删除数组内容,用法为: splice(元素下标, ...
利用对象的 key 唯一 众所周知,对象的key不可重复,否则后者将覆盖前者。利用该特性,实现数组去重,遍历数组,将数组的每一项做为对象的key值 代码语言:javascript 复制 letobj={};for(leti=0;i<arr.length;i++){letitem=arr[i]if(obj[item]!==undefined){arr.splice(i,1);i--;// 解决删除元素后,数组...
嵌套循环去重 这是一种基于比较的去重方法。通过使用两层循环,我们将数组中的每个元素与它后面的元素进行比较。如果发现两个元素相等,就使用splice方法删除重复的元素。 functionunique(array){for(vari=0;i<array.length;i++){for(varj=i+1;j<array.length;j++){if(array[i]===array[j]){array.splice(j...
八、相邻元素去重 这种方法首先调用了数组的排序方法sort(),然后根据排序后的结果进行遍历及相邻元素比对,如果相等则跳过改元素,直到遍历结束 function unique(arr) { if (!Array.isArray(arr)) { console.log('type error!') return } arr = arr.sort() let res = [] for (let ...
arr.sort(function(a,b){ //对数组进行排序才能方便比较 returna - b; }) functionloop(index){ if(index >= 1){ if(arr[index] === arr[index-1]){ arr.splice(index,1); } loop(index - 1); //递归loop函数进行去重 } } loop(len-1); ...
一、通过使用双重for循环结合splice方法来去重 通过使用双重for循环结合数组的splice方法来实现数组去重,这是一种比较常用的方法,尤其是在ES6出现之前该方式比较常用,具体示例如下所示:示例数组:var array = [1, 2, 3, 4, 5, 5, 4, 3, 2,1];处理方法:function repeat(array) { for (var i = 0...
set与解构赋值去重 ES6中新增了数据类型set,set的一个最大的特点就是数据不重复。Set函数可以接受一个数组(或类数组对象)作为参数来初始化,利用该特性也能做到给数组去 function unique(arr) { if (!Array.isArray(arr)) { console.log('type error!') ...