javascript 返回数组中不重复的元素
这是实现结构伪类type-of-type的部分代码:
<script type="text/javascript">
var ret= ["span","span","strong","span","b"]
var norepeat = function(array){
var set = array.join(",")+",";
while(array.length){
var el = array.shift();
set = set.replace(el+",","");
if(set.indexOf(el+",") != -1){
set = set.replace(new RegExp(el+",","g"),"");
array = set.replace(/,$/g,"").split(",");
}else{
set = el+","+set;
}
}
return set.replace(/,$/g,"").split(",")
}
alert(norepeat(ret))//最后返回b,strong
</script>
觉得效果不高,向无忧高手求救。下面是客服果果的(好强大的正则替换啊):
<script language="javascript">
var ret= ["span","span","strong","span","b"];
var norepeat=function (x) {
var y='c0cb5f0fcf239ab3d9c1fcd31fff1efc';
return x.sort().join(y).replace(RegExp('(.*('+y+'|$))\\1+','g'),'').split(y);
};
alert(norepeat(ret));
</script>
abcdreamer 的实现(此实现能过滤非纯字符串数组里的重复,我比较喜欢):
<script language="javascript">
var a = ["span","span","strong","span","b"];
function norepeat(a) {
var i = a.length, j, b;
while (i--) {
j = i;
b = false;
while (j--) {
if (a[i] === a[j]) {
a.splice(j, 1);
i--;
b = true;
}
}
if (b) a.splice(i, 1);
}
return a;
}
alert(norepeat(a));
</script>
哪位高手有更好的实现,请告诉我一声!
看来有些人不明白norepeat函数与unique函数的区别,norepeat是去除数组中重复的元素,如果数组中有两个a,则去除这两个,unique则会去除其中之一。下面是unique函数的实现:
<script language="javascript">
Array.prototype.inArray = function(el){
for (var i=0,n=this.length;i<n;i++ )
if(this[i]===el)return true;
return false;
}
Array.prototype.unique = function() {
var i = 0, n = this.length,ret = [];
for (; i < n; i++)
if (!ret.inArray(this[i])) ret.push(this[i]);
return ret;
};
var ret= ["span","span","strong","span","b"]
alert(ret.unique()) //返回"span","strong","b"
</script>
javascript 返回数组中不重复的元素的更多相关文章
- JavaScript从数组中删除指定值元素的方法
本文实例讲述了JavaScript从数组中删除指定值元素的方法.分享给大家供大家参考.具体分析如下: 下面的代码使用了两种方式删除数组的元素,第一种定义一个单独的函数,第二种为Array对象定义了一个 ...
- linq 根据指定条件返回集合中不重复的元素
原理:先查询出数据,根据指定值分组,然后取第一条映射 1.第一种方法 string sql = string.Format("select*from PoliceLogistcs); db. ...
- Ex 2_14 去掉数组中所有重复的元素..._第二次作业
首先利用归并排序算法对数组进行排序,时间复杂度为O(nlogn),接着再利用时间复杂度为O(n) 的去重复算法去掉数组中的重复元素.总的时间复杂度为O(nlogn). (这题应该用分支算法解决)以下为 ...
- JavaScript去除数组中的重复值
用原型函数(prototype)可以定义一些很方便的自定义函数,实现各种自定义功能. Javascript 中的原型函数(prototype)的工作原理,在 javascript 中每次声明新函数的过 ...
- js中 在数组中删除重复的元素(自保留一个)
例如:var student = [‘qiang’,’ming’,’tao’,’li’,’liang’,’you’,’qiang’,’tao’]; 第一种思路是:遍历要删除的数组arr, 把元素分别放 ...
- (转)js在数组中删除重复的元素自保留一个(两种实现思路)
例如:var student = [‘qiang','ming','tao','li','liang','you','qiang','tao']; 第一种思路是:遍历要删除的数组arr, 把元素分别放 ...
- javascript判断数组中是否包含某个元素
//判断数组array中是否包含元素obj的函数,包含则返回true,不包含则返回false function array_contain(array, obj){ for (var i = 0; i ...
- js学习笔记之在数组中删除重复的元素自保留一个
遍历要删除的数组arr, 把元素分别放入另一个数组tmp中,在判断该元素在arr中不存在才允许放入tmp中 <script type="text/javascript"> ...
- 用JS编写一个函数,返回数组中重复出现过的元素
用JS编写一个函数,返回数组中重复出现过的元素,见下面的代码: , , , , , , , ]; var getRepeat = function (arr) { var obj = {}; , le ...
随机推荐
- linux邮件服务器postfix配置实例
linux邮件服务器postfix配置实例(超级详细!!!) 2013-03-13 13:30:21 标签:邮件服务器 linux 1. 系统安装:1)centos4.3 选上MAIL组件里的全部.2 ...
- Redis - Keepalived + redis 主备热备切换
1. 热备方案 硬件:server两台,分别用于master-redis及slave-redis 软件:redis.keepalived 实现目标: 由keepalived对外提供虚拟IP(VIP)进 ...
- POJ3974 (manacher)
var s,t:ansistring; n,op:longint; p:..] of longint; procedure pre; var i:longint; begin s:='$*'; to ...
- struts2 中的 result 返回类型是 json 的配置问题
struts2 中的 result 返回类型是 json 的配置问题 1.引入包(本文中的包全部引自struts-2.1.8.1\lib): struts2-json-plugin-2.1.8.1.j ...
- 常见的XMLHttpRequest.status状态码
XMLHttpRequest.status状态码 1xx-信息提示 这些状态代码表示临时的响应.客户端在收到常规响应之前,应准备接收一个或多个1xx响应. 100-继续. 101-切换协议. 2xx- ...
- 解决:导入第三方jar包后,仍然出现java.lang.NoClassDefFoundError的错误
最近,在运行某个Android工程的时候,一直抛出java.lang.NoClassDefFoundError异常. 按照异常所给出的信息,应该是程序使用到的第三方jar包出了问题. 但是,这些第三方 ...
- Java-->将txt文件的所有行反转
--> 这里和上次代码不同,对同一文件进行操作,所以要用到一个第三方容器来存储数据 package com.dragon.java.filereverseline; import java.io ...
- Linux中“新旧”TCP/IP工具的对比
如今很多系统管理员依然通过组合使用诸如ifconfig.route.arp和netstat等命令行工具(统称为net-tools)来配置网络功能.解决网络故障,net-tools起源于BSD的TCP/ ...
- ZPPR016-在制品清单报表
*&---------------------------------------------------------------------**& Report ZPPR016*&a ...
- UVa 572 油田(DFS求连通块)
https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...