Js删除数组重复元素的多种方法
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删除数组重复元素的多种方法的更多相关文章
- Perl删除数组中元素的多种方法
Perl中的数组元素起始引用序号为0,@array的第一个元素为$array[0],依次递增,最后一个元素为$array[-1]或者$#array.如果要删除一个数组中已有的元素,可以用以下几个函数来 ...
- php array_flip() 删除数组重复元素——大彻大悟
1. php array_flip() 删除数组重复元素,如果用于一维索引数组,好理解. [root@BG-DB:~]$more arr.php <?php $arr = ar ...
- javascript 笔试题之删除数组重复元素
笔试时紧张没写出来,静下心后发现简单的要死. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" & ...
- js删除数组中元素的方法
一.清空数组 var ary = [1,2,3,4]; ary.splice(0,ary.length);//清空数组 console.log(ary); // 输出 [],空数组,即被清空了 二.删 ...
- [Js]删除数组指定元素
写在前面 在最近的项目中,有用到js对数组的操作,之前自己几乎没有用到这种方法,这里就记录一下,算是对学到的东西的一种总结吧. 数组对象splice方法 splice() 方法向/从数组中添加/删除项 ...
- js删除数组中元素 delete 和splice的区别
例如我有一个数组: var array = ["aa","dd","cc","aa"] ,我想删除这个数组的“dd”元素 ...
- php array_flip() 删除数组重复元素
在PHP中,用于删除数组中重复元素有一个可用的函数,那就是 array_unique(), 但是它并不是一个最高效的方法,使用array_flip() 函数将比array_uniqure()在速度上高 ...
- js取得数组重复元素
function duplicates(arr) { var result=[]; arr.sort();//进行排序,重复的都相邻了 ;i<arr.length;i++){ ]&&am ...
- ArrayList去除重复元素(多种方法实现)
package other; import java.util.ArrayList; import java.util.HashSet; public class test4 { public sta ...
随机推荐
- 通过adb方式给安卓手机截图的cmd批处理文件
@echo off rem 通过adb方式截图rem 需要安装adb ,一般安装了android sdk 默认带了adb ,路径为sdk目录的android-sdk\platform-toolsr ...
- 将表里的数据批量生成INSERT语句的存储过程 增强版
将表里的数据批量生成INSERT语句的存储过程 增强版 有时候,我们需要将某个表里的数据全部或者根据查询条件导出来,迁移到另一个相同结构的库中 目前SQL Server里面是没有相关的工具根据查询条件 ...
- “.Net 社区虚拟大会”(dotnetConf) 2016 Day 3 Keynote: Scott Hanselman
美国时间 6月7日--9日,为期三天的微软.NET社区虚拟大会正式在 Channel9 上召开,美国时间6.9 是第三天, Scott Hanselman 做Keynote.今天主题围绕的是.NET ...
- Linux下服务器端开发流程及相关工具介绍(C++)
去年刚毕业来公司后,做为新人,发现很多东西都没有文档,各种工具和地址都是口口相传的,而且很多时候都是不知道有哪些工具可以使用,所以当时就想把自己接触到的这些东西记录下来,为后来者提供参考,相当于一个路 ...
- ExtJS 4.2 业务开发(三)数据添加和修改
接上面的船舶管理业务,这里介绍添加和修改操作. 目录 1. 添加操作 2. 修改操作 3. 在线演示 1. 添加操作 1.1 创建AddShipWindow.js 在业务中的view目录下创建一个Ad ...
- 和 Thrift 的一场美丽邂逅
一. 与 Thrift 的初识 也许大多数人接触 Thrift 是从序列化开始的.每次搜索 “java序列化” + “方式”.“对比” 或 “性能” 等关键字时,搜索引擎总是会返回一大堆有关各种序列化 ...
- C++中的引用
一,C++中引用的基础知识 1.引用的基本概念 1.所谓的引用其实就是对变量起“别名”.引用和变量对应得是相同的内存,修改引用的值,变量的值也会改变,和指针类似. 2.引用在定义的时候必须要初始化,初 ...
- C++中的const
一,C++中const的基本知识 1.C++中const的基本概念 1.const是定义常量的关键字,表示只读,不可以修改. 2.const在定义常量的时候必须要初始化,否则报错,因为常量无法修改,只 ...
- Android——eclipse下运行android项目报错 Conversion to Dalvik format failed with error 1解决
在eclipse中导入android项目,项目正常没有任何错误,但是运行时候会报错,(clean什么的都没用了.....)如图: 百度大神大多说是jdk的问题,解决: 右键项目-Properties如 ...
- Android中的沉浸式状态栏效果
无意间了解到沉浸式状态栏,感觉贼拉的高大上,于是就是试着去了解一下,就有了这篇文章.下面就来了解一下啥叫沉浸式状态栏.传统的手机状态栏是呈现出黑色条状的,有的和手机主界面有很明显的区别.这一样就在一定 ...