js对数组元素去重有很多种处理的方法,本篇文章中为网络资源整理,当然每个方法我都去实现了;写下来的目的是希望自己活学活用,下次遇到问题后方便解决。

第一种

 function oSort(arr){
var result={};
var newArr=[];
for(var i=0;i<arr.length;i++){
if(!result[arr[i]]){
console.log(result[arr[i]]); //看看输出的是什么
newArr.push(arr[i]);
result[arr[i]]=1;
}
}
console.log(newArr);
}
var st=['a','a','b','a','c','d'];
oSort(st);

以上代码输出  ["a", "b", "c", "d"]

第二种

  备注:遍历要删除的数组st, 把元素分别放入另一个数组tmp中,在判断该元素在st中不存在才允许放入tmp中
 function unique(st){
var tmp=[];
for(var i in st){
if(tmp.indexOf(st[i]) == -1){
tmp.push(st[i]);
}
}
return tmp;
}
var arr=['aa','ab','b','aa','c','d'];
console.log(unique(arr));

以上代码输出 ["aa", "ab", "b", "c", "d"]

说明一下,当arr.indexOf()未找到元素时返回-1

第三种

  备注:把目标数组st的元素值和键的位置调换 自动就把重复的元素给删除掉了
 function unique(st){
var tmp=new Array();
for(var i in st){
tmp[st[i]]=1;
}
var tmparr=new Array();
for(var j in tmp){
tmparr.push(j);
}
console.log(tmp);//看看这里输出了什么
return tmparr;
}
var st=['aa','ab','b','aa','c','d'];
console.log(unique(st));

以上代码输出 ["aa", "ab", "b", "c", "d"]

第四种

 function unique(st){
st=st||[];
var al={};
for(var i=0;i<st.length;i++){
var j=st[i];
if(typeof (al[j]) =='undefined'){
al[j]=1;
}
}
st.length=0;
for(var i in al){
st[st.length]=i;
}
return st;
}
var arr=['aa','ab','b','aa','c','d'];
console.log(unique(arr));

以上代码输出 ["aa", "ab", "b", "c", "d"]

第五种

  备注:使用原型的方法来发散思维,原博主还是很赞。

 //数组去重的方法
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]

上面有提到 indexOf() 方法, 可以看看我的另外一篇文章简单了解JS 中的indexOf方法

综合以上多种数组去重方法,其实方法都是很类似的;就是个别方法与众不同,有时间再来研究其中道理。
附上原文链接:http://www.cnblogs.com/yy-hh/p/4591852.html#3304504

如有疑问之处,欢迎指点,我会及时更正,谢谢!

Js删除数组重复元素的多种方法的更多相关文章

  1. Perl删除数组中元素的多种方法

    Perl中的数组元素起始引用序号为0,@array的第一个元素为$array[0],依次递增,最后一个元素为$array[-1]或者$#array.如果要删除一个数组中已有的元素,可以用以下几个函数来 ...

  2. php array_flip() 删除数组重复元素——大彻大悟

    1. php array_flip() 删除数组重复元素,如果用于一维索引数组,好理解. [root@BG-DB:~]$more arr.php  <?php         $arr = ar ...

  3. javascript 笔试题之删除数组重复元素

    笔试时紧张没写出来,静下心后发现简单的要死. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" & ...

  4. js删除数组中元素的方法

    一.清空数组 var ary = [1,2,3,4]; ary.splice(0,ary.length);//清空数组 console.log(ary); // 输出 [],空数组,即被清空了 二.删 ...

  5. [Js]删除数组指定元素

    写在前面 在最近的项目中,有用到js对数组的操作,之前自己几乎没有用到这种方法,这里就记录一下,算是对学到的东西的一种总结吧. 数组对象splice方法 splice() 方法向/从数组中添加/删除项 ...

  6. js删除数组中元素 delete 和splice的区别

    例如我有一个数组: var array = ["aa","dd","cc","aa"] ,我想删除这个数组的“dd”元素 ...

  7. php array_flip() 删除数组重复元素

    在PHP中,用于删除数组中重复元素有一个可用的函数,那就是 array_unique(), 但是它并不是一个最高效的方法,使用array_flip() 函数将比array_uniqure()在速度上高 ...

  8. js取得数组重复元素

    function duplicates(arr) { var result=[]; arr.sort();//进行排序,重复的都相邻了 ;i<arr.length;i++){ ]&&am ...

  9. ArrayList去除重复元素(多种方法实现)

    package other; import java.util.ArrayList; import java.util.HashSet; public class test4 { public sta ...

随机推荐

  1. python开发编译器

    引言 最近刚刚用python写完了一个解析protobuf文件的简单编译器,深感ply实现词法分析和语法分析的简洁方便.乘着余热未过,头脑清醒,记下一点总结和心得,方便各位pythoner参考使用. ...

  2. 05.LoT.UI 前后台通用框架分解系列之——漂亮的时间选择器

    LOT.UI分解系列汇总:http://www.cnblogs.com/dunitian/p/4822808.html#lotui LoT.UI开源地址如下:https://github.com/du ...

  3. PHP-解析验证码类--学习笔记

    1.开始 在 网上看到使用PHP写的ValidateCode生成验证码码类,感觉不错,特拿来分析学习一下. 2.类图 3.验证码类部分代码 3.1  定义变量 //随机因子 private $char ...

  4. docker for mac 学习记录

    docker基本命令 docker run -d -p 80:80 --name webserver nginx 运行容器并起别名 docker ps 展示目前启动的容器 docker ps -a 展 ...

  5. 彻底搞懂Javascript的“==”

    本文转载自:@manxisuo的<通过一张简单的图,让你彻底地.永久地搞懂JS的==运算>. 大家知道,==是JavaScript中比较复杂的一个运算符.它的运算规则奇怪,容让人犯错,从而 ...

  6. Java实现FTP文件与文件夹的上传和下载

    Java实现FTP文件与文件夹的上传和下载 FTP 是File Transfer Protocol(文件传输协议)的英文简称,而中文简称为"文传协议".用于Internet上的控制 ...

  7. ASP.NET MVC 5 系列 学习笔记 目录 (持续更新...)

    前言: 记得当初培训的时候,学习的还是ASP.NET,现在回想一下,图片水印.统计人数.过滤器....HttpHandler是多么的经典! 不过后来接触到了MVC,便立马爱上了它.Model-View ...

  8. 浅谈SQL注入风险 - 一个Login拿下Server

    前两天,带着学生们学习了简单的ASP.NET MVC,通过ADO.NET方式连接数据库,实现增删改查. 可能有一部分学生提前预习过,在我写登录SQL的时候,他们鄙视我说:“老师你这SQL有注入,随便都 ...

  9. openresty 前端开发入门五之Mysql篇

    openresty 前端开发入门五之Mysql篇 这章主要演示怎么通过lua连接mysql,并根据用户输入的name从mysql获取数据,并返回给用户 操作mysql主要用到了lua-resty-my ...

  10. 在Ubuntu下搭建Spark群集

    在前一篇文章中,我们已经搭建好了Hadoop的群集,接下来,我们就是需要基于这个Hadoop群集,搭建Spark的群集.由于前面已经做了大量的工作,所以接下来搭建Spark会简单很多. 首先打开三个虚 ...