js语法技巧:if(a>=5)  alert();  可以改写成下边语句:  a>=5&&alert(); 在下文中会用到这种写法

// for循环删除后面重复的 速度最快,可用倒序计算可加快速度

var uniqueFor = function(arr) {
for (var i = 0; i < arr.length - 1; i++) {
var item = arr[i];
for(var j = i+1; j < arr.length; j++ ) {
item === arr[j] && (arr.splice(j, 1), j--);
}
};
return arr;
};
uniqueFor ([1,3,5,5,4,5,6,7,8,2,3]) 
 

这个方法效率最高,执行结果是先删除前边的,可以改下方法体倒序查询,就可以从后边开始删除了,请感兴趣的读者自己动手实验

//判断对象属性

var uniqueObject = function(arr) {
var v, r = [], o = {};
for(var i = 0; (v = arr[i]) !== undefined; i++) {
//v取出数组中的一个元素
//如果o的元素中不包含v属性, 则将元素存储到 r中,并设置o[]=true
!o[v] && (r.push(v), o[v] = true);
}
return r;
};
uniqueObject([1,3,5,5,4,5,6,7,8,2,3]) 
 

这个方法是通过将数组项目设置为o的属性后,查找属性中是否存在来进行筛选删除的,删除的是数组中靠后的重复项的,改下循环顺序可以删除靠前便的,不过最后还要颠倒一下数组

//数组过滤重复项filter

var uniqueFilter = function(arr) {
return arr.filter(function(elem, pos, self) {
// 如果没有重复项,返回true,返回false的是有对应的elem会被删除
return self.indexOf(elem, pos + 1) === -1;
});
};
uniqueFilter ([1,3,5,5,4,5,6,7,8,2,3])
 

这个方法是从前边的重复项开始删除的。如果要从后边开始删除,那么删除前线颠倒一下数组吧,删除完毕后再次颠倒回来。

上文中的代码块可以直接复制粘贴到chrome控制台执行查看结果

补充知识点:

array1.filter(callbackfn[, thisArg])

如果 callbackfn 参数不是函数对象,则将引发 TypeError 异常

参数

定义

array1

必需。一个数组对象。

callbackfn

必需。一个接受最多三个参数的函数。对于数组中的每个元素,filter 方法都会调用 callbackfn 函数一次。

thisArg

可选。可在 callbackfn 函数中为其引用 this 关键字的对象。如果省略 thisArg,则 undefined 将用作 this 值。

内容来自MSDN  https://msdn.microsoft.com/library/ff679973%28v=vs.94%29.aspx?f=255&MSPPError=-2147217396

当回调函数返回false时候,对应的项目会被删除

js中数组去除重复项目的更多相关文章

  1. JS中数组去除重复

    法一:返回新数组每个位子类型没变 function outRepeat(a){ var hash=[],arr=[]; for (var i = 0; i < a.length; i++) { ...

  2. JS中数组去除重复的方法

    function unique(arr) { var result = [], hash = []; for (var i = 0, elem; (elem = arr[i]) != null; i+ ...

  3. js 两数组去除重复数值

    //两数组去除重复数值 mergeArray: function(arr1, arr2) { for (var i = 0; i < arr1.length; i++) { for (var j ...

  4. JavaScript中数组去除重复

    方式一:常规模式 1.构建一个新的临时数组存放结果 2.for循环中每次从原数组中取出一个元素,用这个元素循环与临时数组对比 3.若临时数组中没有该元素,则存到临时数组中 //方式一: Array.p ...

  5. js中数组扁平化处理

  6. js中数组去重的几种方法

    js中数组去重的几种方法         1.遍历数组,一一比较,比较到相同的就删除后面的                 function unique(arr){                 ...

  7. JavaScript -- 时光流逝(二):js中数组的方法

    JavaScript -- 知识点回顾篇(二):js中数组的方法 1. 数组 (1)定义数组,数组赋值 <script type="text/javascript"> ...

  8. ARCGIS中怎么去除重复的面?(转)

    ARCGIS中怎么去除重复的面? https://blog.csdn.net/gswwldp/article/details/66974522   第一种: 1.用polygon to line将面转 ...

  9. php和js中数组的总结

      php中数组的表示方法:array()或者[] js中数组的表示方法:new array()或者[] 一.php中初始化命名数组 在PHP中声明数组的方式主要有两种:一是应用array()函数声明 ...

随机推荐

  1. 读取properties配置文件的方法

    一般在.properties文件中配置数据库连接的相关信息,我们需要从中读取信息,以便建立与数据库的连接. 文件目录: application.properties配置信息: url=jdbc:ora ...

  2. 2.sort 排序命令讲解

    sort命令  sort:文本排序,仅仅是对显示文件的排序,而不影响源文件的顺序,是根据ASSII码     的字符升序来排列的.        -n:安装数值大小从小到大排列 ,默认是升序.     ...

  3. 烂泥:ubuntu 14.04搭建OpenVPN服务器

    本文由秀依林枫提供友情赞助,首发于烂泥行天下 公司分部需要连接公司内部的服务器,但是该服务器只允许公司内部的网络访问. 为了解决这个问题,打算使用VPN.对于VPN以前使用最多的是PPTP这个解决方案 ...

  4. 排序算法----基数排序(RadixSort(L,max))单链表版本

    转载http://blog.csdn.net/Shayabean_/article/details/44885917博客 先说说基数排序的思想: 基数排序是非比较型的排序算法,其原理是将整数按位数切割 ...

  5. Spring事物管理

    spring事务配置的五种方式 前段时间对Spring的事务配置做了比较深入的研究,在此之间对Spring的事务配置虽说也配置过,但是一直没有一个清楚的认识.通过这次的学习发觉Spring的事务配置只 ...

  6. PHP基础语法

             PHP:超级文本预处理器一,PHP的四对标记 <?php ?> <script language="php"> <script> ...

  7. Ubuntu[1]安装Vesta Control Panel

    参考:http://www.5013.org/archives/819 1)登录 ssh ubuntu@139.199.9.173 ubuntu@139.199.9.173's password: 重 ...

  8. jq.validate隐藏元素忽略验证

    jq.validate隐藏元素忽略验证 现在有这样一个需求,当触发某类事件时候,需要在页面中显示input框,但是当不需要加载页面中的元素时候,进行隐藏.在这个需求的前提下,程序中对于input中的输 ...

  9. IFC格式简介

    IFC是一个数据交换标准, 用于不同系统交换和共享数据.当需要多个软件协同完成任务时, 不同系统之间就会出现数据交换和共享的需求.这时, 工程人员都希望能将工作成果(这里就是工程数据), 从一个软件完 ...

  10. How to Disable Strict SQL Mode in MySQL 5.7

    If your app was written for older versions of MySQL and is not compatible with strict SQL mode in My ...