利用JavaScript的object的特性,我们可以非常容易的实现将一个数组的重复项去掉。

object的特性是:key一定是唯一的。

把数组重复项去掉:

  1 将数组转换成一个object对象,数组的值作为object对象的 key

    因为key是唯一的,碰到重复的数组值的时候,object不会添加key

  2 将object对象转换成数组,key为数组的值。

    在之前的重复数组,每一个值实际上对应object只有一个key,这样在还原到数组的时候,重复值就去掉了

 /*用object的特性去掉数组的重复项:
1 把数组转化成oject对象,用数组的值当作obj的key
2 把object再转换成数组
*/ // 传入数组 返回object对象
var toObj = function( arr ){
obj = {};
for(var temp in arr){
//对arr的每一个值添加到obj的key,value都是true
obj[arr[temp]] = true;
}
return obj;
};
// 传入obj对象 返回arr数组
var toArr = function( obj ){
var arr = [];
for(var temp in obj){
//把所有的key push到数组当中
arr.push(temp);
}
return arr;
};
//把两个方法联合起来
var getUniq = function(arr){
return toArr( toObj(arr) );
}; var arr = [1,1,2,2,3,3,4,4,5,5,5,6,6,6,6,6,6,5,4,3,54,8,11]; alert(getUniq(arr));

利用JavaScript去掉数组中重复项的更多相关文章

  1. C# 移除数组中重复项

    方法一: static void Main(string[] args) { //看到数组的第一反应应该是排序 ,,,,,,,}; //去掉数组中重复的项 //先排序 arrayAsc(array); ...

  2. JavaScript去除数组中重复的数字

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  3. 高效率去掉js数组中重复项

    Array类型并没有提供去重复的方法,如果要把数组的重复元素干掉,那得自己想办法: function unique(arr) { var result = [], isRepeated; for (v ...

  4. js-一种去掉数组中重复元素的方法

    思路来源于某个同学的博客 function norepeat(arr){ return arr.filter(function(val,index,array) { return array.inde ...

  5. js 去掉数组中重复值,不重复的值保留

    这里介绍2中方式:js代码如下 var arr=[1,7,3,2,1,4,12,3,"3",3] function compare(arr) { var result = [], ...

  6. 查找数组中重复项的index

    var ary = [5, 4, 4, 2, 7, 8, 33, 2222, 99, 88]; function isRepeat(arr) { var hash = {}; for (var i=0 ...

  7. JS去掉数组的重复项

    自己知道思路怎么去,但是就是自己不会写,在网上找了一些来看,有些还是没有怎么看明白.学习到了这么一种方法 var a=['ss','dd','ss','cc','dd',1,2,1] var b={} ...

  8. js 去掉数组中重复的对象

    function deteleObject(obj) { // console.log(obj) var uniques = []; var stringify = {}; ; i < obj. ...

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

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

随机推荐

  1. 【Unity3D与23种设计模式】模板方法模式(Template Method)

    GoF中定义: "在一个操作方法中定义算法的流程,其中某些步骤由子类完成. 模板方法模式让子类在不变更原有算法流程的情况下,还能够重新定义其中的步骤" 每一次武器攻击目标时,都要按 ...

  2. Linux/Unix 资源

    Linux/Unix笔记本 初窥Linux 之 我最常用的20条命令 Linux Shell脚本教程

  3. ubuntu下ftp服务

    (1).首先用命令检查是否安装了vsftpd vsftpd -version 如果未安装用一下命令安装 sudo apt-get install vsftpd 安装完成后,再次输入vsftpd -ve ...

  4. 如何写对kubernetes的模板文件

    kubernetes的模板配置文件随着版本更迭也会有相应的调整,正确配置模板关键字的方式是参考版本发布的doc,如下图 在docs\api-reference下面有不同功能的API目录,如下图 各个A ...

  5. java报错排解

    1.eclipse新安装第一次启动报错: Javawas started but returned exit code=13-- 这是由于JDK和eclipse和电脑的位数不一致所致,要么都为32位, ...

  6. [POJ 2226] Muddy Fields

    题目 Description 如何放木板保证只覆盖到 '*' 而没有覆盖到 '.' Solution (我太废了竟然想这题想了一个小时)考虑当前需要被覆盖的点 (x,y),假设有一块横着铺的木板 i ...

  7. java之简单工厂模式详解

    设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了可重用代码.让代码更容易被他人理解.保证代码可靠性. 毫无疑问,设计模式于 ...

  8. 【Python】 闭包&装饰器

    python中的函数本身就是对象,所以可以作为参数拿来传递.同时其允许函数的层级嵌套定义,使得灵活性大大增加. 闭包 闭包的定义:将函数的语句块与其运行所需要的环境打包到一起,得到的就是闭包对象.比如 ...

  9. 基于PLC-C#串口通讯,温度检测和转速监控的c#/.Net实现。

    我司为五金加工企业,其中有一条喷涂车间和流水线,客户要求能实时监控炉温温度.流水线速,并设置上下限值,达到上下限时报警. 开始考虑过USB的温度采集器,但是却没有找到带USB的光电开关,并且线路长度受 ...

  10. 两种设计模式和XML解析

    两种设计模式 1.单例模式 模式的保证步骤:单例(是说在一个类中只能有一个对象)三条件 1.1类构造设置私有  private  Play() { } 1.2 定义一个私有的静态的  类类型  变量 ...