JS二维数组去重

       在网上找了很多的JS二维数组去重的方法,基本上都有Bug,不是去除不完全就是只能根据特定的条件去除,或者去除了非重复元素。项目中需要解决这个问题,所以自己写了一个方法,方便自己也方便他人,本人已测试过很多数据,修复了很多Bug,如果网友发现了Bug,恳请提出,本人再改进。代码如下:

 

 
var arr = [
[1, 2, 'haha'],
[1, 3, 'haha'],
[2, 2, 'haha'],
[1, 2, 'xixi'],
[1, 2, 'haha'],
[1, 3, 'haha'],
[1, 3, 'haha'],
[1, 3, 'haha'],
[1, 3],
[1, 2],
[1, 3],
['he','xi','ze'],
['he','xi','ze'],
['he','xi','zi'],
['he','xi'],
['he','xi'],
['he','xi','ze','zi']
]; // 用于测试的复杂数组
var temp;
var count;
for (var i = 0; i < arr.length; i++) { // 第一次遍历数组,确保数组里的子数组都能被检测
temp = arr[i]; // 存储被检测的当前子数组
for (var k = 0; k < arr.length; k++) {
if (k != i && arr[k].length == temp.length) { // 第二次遍历数组,检测除了被检测数组本身以及两者长度不一样的子数组
count = 0; // 初始化
for (var j = 0; j < arr[k].length; j++) { // 遍历检测的子数组
if (arr[k][j] == temp[j]) {
count++; // 记录检测子数组与被检测子数组中的元素重复次数
}
}
if (count == temp.length) { // 如果次数与被检测子数组的长度相等,代表两者重复
arr.splice(k,1); // 删除该重复元素
k--; // 数组长度变化,K需要减一回到当前位置
}
}
}
}
console.log(arr); // 查看效果

 

 

 

       用到了for循环嵌套,从性能上来说有一点不美好,但是如果要到达效果,只能这么做了。如果有朋友能有改进的方法,也欢迎提出。

  • 7
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值