这是实现结构伪类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 返回数组中不重复的元素的更多相关文章

  1. JavaScript从数组中删除指定值元素的方法

    本文实例讲述了JavaScript从数组中删除指定值元素的方法.分享给大家供大家参考.具体分析如下: 下面的代码使用了两种方式删除数组的元素,第一种定义一个单独的函数,第二种为Array对象定义了一个 ...

  2. linq 根据指定条件返回集合中不重复的元素

    原理:先查询出数据,根据指定值分组,然后取第一条映射 1.第一种方法 string sql = string.Format("select*from PoliceLogistcs); db. ...

  3. Ex 2_14 去掉数组中所有重复的元素..._第二次作业

    首先利用归并排序算法对数组进行排序,时间复杂度为O(nlogn),接着再利用时间复杂度为O(n) 的去重复算法去掉数组中的重复元素.总的时间复杂度为O(nlogn). (这题应该用分支算法解决)以下为 ...

  4. JavaScript去除数组中的重复值

    用原型函数(prototype)可以定义一些很方便的自定义函数,实现各种自定义功能. Javascript 中的原型函数(prototype)的工作原理,在 javascript 中每次声明新函数的过 ...

  5. js中 在数组中删除重复的元素(自保留一个)

    例如:var student = [‘qiang’,’ming’,’tao’,’li’,’liang’,’you’,’qiang’,’tao’]; 第一种思路是:遍历要删除的数组arr, 把元素分别放 ...

  6. (转)js在数组中删除重复的元素自保留一个(两种实现思路)

    例如:var student = [‘qiang','ming','tao','li','liang','you','qiang','tao']; 第一种思路是:遍历要删除的数组arr, 把元素分别放 ...

  7. javascript判断数组中是否包含某个元素

    //判断数组array中是否包含元素obj的函数,包含则返回true,不包含则返回false function array_contain(array, obj){ for (var i = 0; i ...

  8. js学习笔记之在数组中删除重复的元素自保留一个

    遍历要删除的数组arr, 把元素分别放入另一个数组tmp中,在判断该元素在arr中不存在才允许放入tmp中 <script type="text/javascript"> ...

  9. 用JS编写一个函数,返回数组中重复出现过的元素

    用JS编写一个函数,返回数组中重复出现过的元素,见下面的代码: , , , , , , , ]; var getRepeat = function (arr) { var obj = {}; , le ...

随机推荐

  1. 一个简单的tr:hover效果

    昨天,搞项目的时候,在一个小问题上卡了40分钟,现在想想,还是平时比较少去注意一些细节,经过这次,一定要去多注意细节了. 好了废话不多说,我现在说明下遇到的问题,一个表格中,要求是当鼠标滑过每一行时, ...

  2. Why does my ListView scroll to the top when navigating backwards?

    I’ve seen a few people asking this question. They have a page which contains a ListView and when an ...

  3. Samsung_tiny4412(驱动笔记01)----linux 3.5,U-Boot,Busybox,SD卡启动环境搭建

    /*********************************************************************************** * * linux 3.5,U ...

  4. PHP startsWith and endsWith

    function startsWith($haystack, $needle) { // search backwards starting from haystack length characte ...

  5. JavaScript数据结构——数组

    参考书籍:<学习JavaScript数据结构与算法>

  6. ubuntu 登录循环

    星期一大清早一来,就出现这毛病.折腾了办个多小时,终于搞定: 我的原因:上周五的时候为了装hive改动了/etc/enviroment里面的东西,导致出错. 解决办法:1.Ctrl + Alt + F ...

  7. UVa 10120 - Gift?!

    题目大意 美丽的村庄里有一条河,N个石头被放置在一条直线上,从左岸到右岸编号依次为1,2,...N.两个相邻的石头之间恰好是一米,左岸到第一个石头的距离也是一米,第N个石头到右岸同样是一米.礼物被放置 ...

  8. 硬盘缓存的最佳方案,DiskLruCache完全解析

    收藏自:http://blog.csdn.net/guolin_blog/article/details/28863651

  9. Java-->发牌流程修改版

    --> 这一次要封装得狠一点... package com.xm.ddz; // 每一张牌的属性 public class Card { private String flowerColor; ...

  10. PR 创建

    REPORT  Z_CREATE_PR. DATA: BEGIN OF GT_DATA1 OCCURS 0,            BSART   TYPE STRING, "凭证类型    ...