javascript删除数组重复元素的方法汇总


本文实例讲述了javascript删除数组重复元素的方法。分享给大家供大家参考。具体分析如下:

这里分享一个前端面试高频题,主要实现javascript删除数组重复元素。希望对初学者有所帮助

//数组去重的方法
Array.prototype.unique=function(){
  //集中声明变量
  var 
   oldArr=this,
   newArr=[oldArr[0]],
   len=oldArr.length,
   i=1;
  //过滤空数组
  if(!len) return this;
  //过滤重复元素
  for(;i<len;i++){
    newArr.indexOf(oldArr[i])<0 ? newArr.push(_this) : ''; 
  }
  //返回过滤后的数组没有影响原数组
  return newArr;
}
var arr=['a','a','b','a','c','d'];
console.log(arr.unique());
//["a", "b", "c", "d", unique: function]

虽然网上也有很多而且自己写的也不咋地,但是毕竟自己写的逻辑清楚以后还可以顺着逻辑扩展比如扩展到对象元素去重或者是可以同时操作多个数组等等这里再放上别人的写的几个方法可以综合比较下

方法1:

function oSort(arr)
{
  var result ={};
  var newArr=[];
  for(var i=0;i
  {
 if(!result[arr[i]])
 {
   newArr.push(arr[i])
   result[arr[i]]=1
 }
  }
  return newArr
}

方法2:

遍历要删除的数组arr, 把元素分别放入另一个数组tmp中,在判断该元素在arr中不存在才允许放入tmp中
用到两个函数:for ...in 和 indexOf()

var student = ['qiang','ming','tao','li','liang','you','qiang','tao'];
 function unique(arr){
   // 遍历arr,把元素分别放入tmp数组(不存在才放)
   var tmp = new Array();
   for(var i in arr){
  //该元素在tmp内部不存在才允许追加
  if(tmp.indexOf(arr[i])==-1){
  }
 }
  return tmp;
}

方法3:

把目标数组arr的元素值和键的位置调换 自动就把重复的元素给删除掉了,调换后的样子:array('qiang'=>1,'ming'=>1,'tao'=>1)

<script type="text/javascript">
  var student = ['qiang','ming','tao','li','liang','you','qiang','tao'];
  function unique(arr){
    var tmp = new Array();
    for(var m in arr){
      tmp[arr[m]]=1;
    }
    //再把键和值的位置再次调换
    var tmparr = new Array();
    for(var n in tmp){
     tmparr.push(n);
    }
   return tmparr;
 }
</script>

方法4

/**
* 去除数组重复元素
*/
function uniqueArray(data){ 
  data = data || []; 
  var a = {}; 
  for (var i=0; i<data.length; i++) { 
    var v = data[i]; 
    if (typeof(a[v]) == 'undefined'){ 
      a[v] = 1; 
    } 
  }; 
  data.length=0; 
  for (var i in a){ 
    data[data.length] = i; 
  } 
  return data; 
} 

方法都差不多第三个方法想法还是蛮高明的~

希望本文所述对大家的javascript程序设计有所帮助。



相关阅读:
js仿3366小游戏选字游戏
node-http-proxy修改响应结果实例代码
Win10安装率高暴虐Win8!你就是第二个Vista
如何让安卓(Android)子控件超出父控件的范围显示
详细了解CSS中的class与id区别及用法
多个checkbox被选中时如何判断是否有自己想要的
Linux系统的电脑上调整屏幕亮度的方法
如何创建一个WinXP的域环境并将计算机加入到域中
《JavaScript高级编程》学习笔记之object和array引用类型
jquery+json实现数据二级联动的方法
node.js连接mongoDB数据库 快速搭建自己的web服务
PHP中开启gzip压缩的2种方法
win7电脑系怎么设置不睡眠、不自动黑屏?
详解PNG图片
快速导航
PHP MySQL HTML CSS JavaScript MSSQL AJAX .NET JSP Linux Mac ASP 服务器 SQL jQuery C# C++ java Android IOS oracle MongoDB SQLite wamp 交通频道 作文范文 泉州-武汉 四平-冯屯 徐州-黄梅 金寨-惠山 盘锦-义乌 甘谷-吐鲁番北 道德-正镶白旗 卓资东-陶赖昭 新肇-新华屯 榆林-开鲁 西小召-哈业胡同 株洲-顺昌 莱芜东-南仇 查布嘎-八面城 闽清北-江山 化州-宜州 石柱县-广州南 阳泉北-浩良河 鹤壁东-西安北 四方台-凤凰城 元宝山-东南营子 吐鲁番-定西 邓州-青岛 集宁南-德州 定陶-铁岭 东安东-来宾北 三江口-太平川 晏城-芜湖 邵阳-衡阳 潍坊-枣庄 许昌东-葫芦岛北 渭南北-溧水 嘉峰-王庄 分宜-宁国 吕梁-子洲 进贤-桂林北 赣州-枣阳 威箐-瓦窑田 缙云-大虎山 潍坊-郓城 八苏木-十八台 泗水-泰山 孔庄-东田良 双丰-福利屯 左家-前窑 梅河口-南杂木 尤溪-子长 大营镇-光山 灵宝-高邑 南木-喇嘛山 徐州-镇远 奈曼-承德 肇庆东-桂林西 丰都-永修 高平-怀仁东 平邑-兖州 吕梁-泰山 农安-普兰店 兴安岭-辽阳 绵阳-南平南 衡水-文水 齐齐哈尔-泰康 溧水-龙游 奎屯-焉耆 四平-曲靖 花家庄-松河 南充-汉口 秦皇岛-大同 宣化-大连 亚布力-古城镇 盐池-文水 滁州北-济宁 葫芦岛-海宁 桂林北-咸阳 上海南-遵义 兴国-南雄 太平川-胶州 砀山-鲁山 上饶-武义 沈阳北-安化 问下从上海浦东机场到连云港怎么坐车先到客车汽车站啊,从上海哪
铁路术语中“车站”、“车间”之间是什么关系
谁知道石家庄新开的海洋馆票价钱数多少啊?人民广场下边那个
沙漠的奇异现象
请问湛江到成都自己驾车要多久最佳、最近的路线和费用、
济南哪个电影院里火车列车站近
从辽宁本溪到福建龙岩坐火车列车要多少钱
哪位朋友从武汉到临汾,先坐火车到三门峡西转车再汽车
从金昌到兰州的列车有哪些还有票价
南京哪个站有到福建三明市的客车票卖或是到大田县.去过的人
10.1从长春出发去鞍山市千山景区游玩,到达鞍山后如何去千山
泗阳到连云港全程高速驾车多少公里
金华列车站 凌晨2,3点的时候有卖票的吗
请问邵阳到吉首有直达火车列车吗
东莞社保可以移到武汉吗?流程是怎么样的?请知悉人员马上告知,
从江苏常熟到珠海怎么坐车方便
金华到乌溪江怎么坐车
从东营市到北京和东营市到石家庄(坐火车客车都行)那个快啊
从嘉兴到嘉善县姚庄镇怎么坐车
从重庆座火车列车到安徽宿州要多长时间?车票大概多少钱?车次是多少?
急求答案:L125次列车火车这段时间要从商丘、西安绕行吗
曲靖列车火车站到麒麟区职业技术学校(南城门广场旁)怎么走
在广州番禺大石开车到汕头,走高速,怎么坐车最近,最省钱
浙江温州理论报了驾校能不能换驾校学车
请问黄河万家寨水利枢纽有限公司的待遇和发展怎么样?请各位...
春节后临沂到北京的火车列车票提前几天买
怎么才能买到T182从武汉到天津的坐票
从杭州到海宁皮革城哪种交通工具比较方便
东莞东列车火车站2011春运往武昌方向时刻表
你会爱一个人爱到愿为他付出生命么

Copyright © 2016 phpStudy |