js数组去重
来源:互联网 发布:昆明询知培训中心av2类 编辑:程序博客网 时间:2024/05/16 08:50
最近在工作中遇到数组中元素是的对象且需要去重的问题,在网上查找到的解决办法有很多,这里挑选了一种比较靠谱的方法,与大家分享一下,代码如下:
Array.prototype.arrUniq = function() {var temp,arrVal, array = this,arrClone = array.concat(),//克隆数组typeArr = {//数组原型'obj' : '[object Object]','fun' : '[object Function]','arr' : '[object Array]','num' : '[object Number]' },ent = /(\u3000|\s|\t)*(\n)+(\u3000|\s|\t)*/gi;//空白字符正则//把数组中的object和function转换为字符串形式for(var i = arrClone.length; i--;){arrVal = arrClone[i];temp = Object.prototype.toString.call(arrVal);if(temp == typeArr['num'] && arrVal.toString() == 'NaN'){arrClone[i] = arrVal.toString();}if(temp == typeArr['obj']){arrClone[i] = JSON.stringify(arrVal);}if(temp == typeArr['fun']){arrClone[i] = arrVal.toString().replace(ent,'');}}//去重关键步骤for (var i = arrClone.length; i--;) { arrVal = arrClone[i]; temp = Object.prototype.toString.call(arrVal); if(temp == typeArr['arr']) arrVal.arrUniq();//如果数组中有数组,则递归if (arrClone.indexOf(arrVal) != arrClone.lastIndexOf(arrVal)) {//如果有重复的,则去重array.splice(i,1); arrClone.splice(i, 1); } else{ if(Object.prototype.toString.call(array[i]) != temp){ //检查现在数组和原始数组的值类型是否相同,如果不同则用原数组中的替换,原因是原数组经过了字符串变换 arrClone[i] = array[i]; } } } return arrClone;}
1 0
- JS 数组去重
- js数组去重
- js 数组去重
- js 数组去重
- js数组去重
- js 数组去重
- js数组去重
- JS 数组去重
- //js数组去重
- js-数组去重
- js数组去重
- js 数组去重
- js数组去重
- JS 数组去重
- JS 数组去重
- js数组去重
- JS 数组去重
- js数组去重
- 简单的二维码生成
- json
- jquery的ajax调取后端数据成功却渲染失败的原因
- 简单的背包最大效益问题
- hashMap(一)——拉链法冲突处理与hashMap源码分析
- js数组去重
- SQL关于连接查询
- LeetCode算法题目:Sum Root to Leaf Numbers
- JavaScript的表单验证
- React虚拟DOM浅析
- redis 学习(未完)
- MySQL server has gone away 问题的解决方法
- 啸叫抑制
- 这是什么鬼