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 ...
随机推荐
- 从0开始搭建SQL Server AlwaysOn 第二篇(配置故障转移集群)
从0开始搭建SQL Server AlwaysOn 第二篇(配置故障转移集群) 第一篇http://www.cnblogs.com/lyhabc/p/4678330.html第二篇http://www ...
- 以bank account 数据为例,认识elasticsearch query 和 filter
Elasticsearch 查询语言(Query DSL)认识(一) 一.基本认识 查询子句的行为取决于 query context filter context 也就是执行的是查询(query)还是 ...
- AutoFac在项目中的应用
技能大全:http://www.cnblogs.com/dunitian/p/4822808.html#skill 完整Demo:https://github.com/dunitian/LoTCode ...
- OpenCASCADE Shape Location
OpenCASCADE Shape Location eryar@163.com Abstract. The TopLoc package of OpenCASCADE gives resources ...
- 深入理解CSS中的margin负值
前面的话 margin属性在实际中非常常用,也是平时踩坑较多的地方.margin折叠部分相信不少人都因为这样那样的原因中过招.margin负值也是很常用的功能,很多特殊的布局方法都依赖于它.它看似简单 ...
- 解决vs创建或打开C++浏览数据库文件*.sdf时发生错误的问题
VS2012, 创建或打开C++浏览数据库文件*.sdf时发生错误. IntelliSense 和浏览信息将不能用于C++项目. 请确保已安装 Microsoft SQL Server Compac ...
- 解决Android Studio 无法显示Layout视图问题
在Android Studio 当中,如果你选择的SDK的版本 与你所显示的视图版本不一致时,会出现这个错误 Exception raised during rendering:com/android ...
- CSS学习笔记
CSS学习笔记 2016年12月15日整理 CSS基础 Chapter1 在console输入escape("宋体") ENTER 就会出现unicode编码 显示"%u ...
- 熊乐:H3 BPM为加速企业流程管理提供源动力
近日,在北京·金隅喜来登酒店,H3 BPM以"让天下没有难用的流程"为主题,正式发布H3 BPM10.0版本.全新的业务流程管理系统在易用性方面大大提升,并且全面支持Java与.N ...
- 基于Ubuntu Hadoop的群集搭建Hive
Hive是Hadoop生态中的一个重要组成部分,主要用于数据仓库.前面的文章中我们已经搭建好了Hadoop的群集,下面我们在这个群集上再搭建Hive的群集. 1.安装MySQL 1.1安装MySQL ...