之前写过二维数组去重,今天再翻出来看了看,简直不忍直视,如此垃圾,所以今天重新写一下咯。
二维数组去重,重复问题一定要和哈希联系起来,js和java不一样,没有map(es6有),但是js有object,键是不会重复的,不多说,代码如下:
var matrix=[ [1,2,3,4], [3,4,5,6], [1,2,3,4] ] var removeRepeat=function(arr){ var obj={}; for(var i=0;i<arr.length;i++){ // 判断当前项是否遍历过,是则删除,否存入obj以作对照 if(obj.hasOwnProperty(arr[i])){ arr.splice(i,1) i++; } obj[arr[i]]=i; } return arr; } removeRepeat(matrix);
继续优化,将该方法存入数组原型链,代码如下:
var matrix=[ [1,2,3,4], [3,4,5,6], [1,2,3,4] ] Array.prototype.removeRepeat=function(){ var obj={}; for(var i=0;i<this.length;i++){ // 判断当前项是否遍历过,是则删除,否存入obj以作对照 if(obj.hasOwnProperty(this[i])){ this.splice(i,1) i++; } obj[this[i]]=i; } return this; } console.log(matrix.removeRepeat());
原文地址:https://www.cnblogs.com/xingguozhiming/p/9775711.html
时间: 2024-11-06 09:34:12