http://blog.csdn.net/liangklfang/article/details/49300417

1.证明一个对象是数组的方法。

方法(1)

[].constructor === Array
true
[].constructor === 'Array'
false

方法(2)

Object.prototype.toString.call([]) == "[object Array]"

以下数js数组去重。==========================================================

先看博客:http://www.itnose.net/detail/6392462.html

这里有一个hash的方法:http://www.itnose.net/detail/6431264.html

第一种遍历方法:

a.是检测新数组newArr里有没有包含Arr里的i项,如果没有则向newArr里添加Aii[i]项,如果有则跳过;不做任何操作。

var Arr = [0,0,1,1,2,2,3,3,4,4,5,5,6,7,8,9];
function unArray (Arr) {
var newArr = [];
for (var i = 0; i < Arr.length; i++) {
if (newArr.indexOf(Arr[i]) == -1){//检测newArr数组里是否包含Arr数组的内容,==-1检索的字符串没有出现则为-1
newArr.push(Arr[i])//把Arr数组的第i项插入新数组
}
};
return newArr;
}
unArray(Arr);
//console.log(unArray(Arr));

b.是在Arr数组里检测,Arr.indexOf(Arr[i])返回某一项在Arr数组里第一次出现的位置,如果第一次出现就push到newArr数组去,如果第二次出现,则什么都不操作。

var Arr = [0,0,1,1,2,2,3,3,4,4,5,5,6,7,8,9];
function unArray (Arr) {
var newArr = [Arr[0]];
for (var i = 1; i < Arr.length; i++) {
if (Arr.indexOf(Arr[i]) == i){//检测Arr数组第一次出现的位置是i
newArr.push(Arr[i])//把Arr数组的第i项插入新数组newArr
}
};
return newArr;//返回新数组newArr
}
unArray(Arr);
//console.log(unArray(Arr));

第二种方法:

排序后相邻去除法(这种排序有序局,有些不是数字的数组是无法进行排序的。)

思路:先将数组经过sort排序,这时候相同的元素处于相邻的位置,所以在便利数组的时候我们只将与前一值不重复的值

 function unique(array){
var reArr=[array[0]];
var len=array.length;
array.sort();
for(var i=1;i<len;i++){
if(array[i]!=reArr[reArr.length-1]){//注意这里
reArr.push(array[i]);
}
}
return reArr;
}

第三种方法:

对象键值对法

思路:新建一js对象json以及新数组reArr,遍历数组元素是否为json的键,不是则创建,是则判断元素的类型在键对应的值中是否存在。

   function unique(array){
var json = {}, reArr = [], len = array.length, val, type;
for (var i = 0; i < len ; i++) {
val = array[i];
type = Object.prototype.toString.call(val);
if (!json[val]) {//如果键对应的值不存在则是第一次存取
json[val] = [type];//设置该键为数组,并赋值元素类型
reArr.push(val);//往reArr中添加元素
} else if (json[val].indexOf(type) < 0) {
json[val].push(type);
reArr.push(val);
}
}
return reArr;
}
//该方法有bug,当有多个{}时,只能保存一个{}

第四种方法:

个人感觉第三种没有什么鸟用。

Array.from(new Set([3,2,20,45,12,20]))

第五种方法:

[...new Set([3,2,20,45,12,20])]

我认为这是属于去重的最简单的一种方式了。

=============

Js类数组转数组的方法。

http://www.jianshu.com/p/f8466e83cef0

Array.prototype.slice.call(arrayLike)

这里有一篇博客:

这里的话,我们必须先http://www.jb51.net/article/46154.htm

这里边推荐的第三种方法。

js数组和数组去重的几种简单的方法的更多相关文章

  1. js跨域请求数据的3种常用的方法

    由于js同源策略的影响,当在某一域名下请求其他域名,或者同一域名,不同端口下的url时,就会变成不被允许的跨域请求.那这个时候通常怎么解决呢,对此菜鸟光头我稍作了整理:1.JavaScript   在 ...

  2. 两种简单的方法Docker构建LANMP

    在初步入门学习Docker的过程中一步步了解了Docker容器在团队开发中所起到的作用,一边学习一边操作基本命令,当然到现在还处于一个擦边的入门阶段. 尝试一下用Docker构建一个集成开发环境. S ...

  3. C语言复制文件的两种简单的方法【从根本解决问题】

    网上的方法大致有这样几种: 1.使用操作系统提供的复制文件的API 2.使用C语言本身提供的复制文件的函数 3.直接读写文件,从文件角度来操作,从而直接将一个文件复制 这里我们使用的就是这第三种. 复 ...

  4. elasticsearch安装与使用(1)-- centos7 elasticsearch的两种简单安装方法

    转自:http://www.cnblogs.com/miao-zp/p/6003160.html 简单修改 前言 elasticsearch(下面称为ES)是一个基于Lucene的搜索服务器(By 百 ...

  5. 导入数据到mysql的一种简单的方法

    由于ubuntu默认自带的mysql版本号为5.5,并不能使用load data infile这样的高级的功能,因此我们写了一个通用的脚本来上传文件 shell脚本 cat ./employee.cs ...

  6. JS nodeList转数组,兼容IE低版本

    一.前言 nodeList转数组貌似很少会这样去操作,但我在做图片懒加载时,我获取了所有需要做懒加载的img元素,也就是一个NodeList对象,打个比方: 对这些元素进行src修改后,我想将此项从N ...

  7. php 数组元素快速去重

    1.使用array_unique方法进行去重 对数组元素进行去重,我们一般会使用array_unique方法,使用这个方法可以把数组中的元素去重. <?php $arr = array(,,,, ...

  8. Honeywords项目——检查密码是否被破解的一种简单方法

    Honeywords项目使用一种简单的方法来改进hash后的密码的安全性——为每个账户维护一个额外的honeywords(假密码).如果有黑客拿到了密码的文件,然后试图用brute froce的方式破 ...

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

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

随机推荐

  1. 清除 System.Web.Caching.Cache 以"xxx"开头的缓存

    public static void ClearStartCache(string keyStart) { List<string> cacheKeys = new List<str ...

  2. Codeforces Round div2 #541 题解

    codeforces Round #541 abstract: I构造题可能代码简单证明很难 II拓扑排序 III并查集 启发式排序,带链表 IV dp 处理字符串递推问题 V 数据结构巧用:于二叉树 ...

  3. andorid证书生成

    首先得有JDK DOS窗口切换到证书要保存的目录 keytool -genkey -alias mykey -keyalg RSA -validity 40000 -keystore demo.key ...

  4. 环形dp

    对于环形的dp 大多情况都是破环成链 例如 那道宝石手镯的环形 一般来说都是要破环成链的. 或者说 是 两次dp 一次断开 一次强制连接即可. 我想 我应该沉淀下来了这些天写的题都有点虚 要不就是看了 ...

  5. FastJson一些常见方法(API):处理JSON变得好简单

    fastjson是目前java语言中最快的json库,比自称最快的jackson速度要快,第三方独立测试结果说明比gson快大约6倍 JSON帮助类 这个可以做一个实例研究代码,也可以作为一个工具类 ...

  6. postman进行接口测试

    1.添加header 2.入参为json格式 3.添加cookie 4.上传文件

  7. Python cffi学习(二)

    上篇文章中讲到Python中调用外部c文件可以有两种方法,一是使用cffi.verify()的形式使用,但是该种方式仍然需要进行函数声明.二是将外部c文件编译成为函数库,然后通过cffi进行使用. 由 ...

  8. python字符串拼接

    Python字符串拼接 在Python的实际开发中,很多都需要用到字符串拼接,python中字符串拼接有很多,今天总结一下: 用+符号拼接 用%符号拼接 用join()方法拼接 用format()方法 ...

  9. python练习题-day10

    1.继续整理函数相关知识点,写博客. 2.写函数,接收n个数字,求这些参数数字的和.(动态传参) def fun(*args): sum=0 for i in args: sum+=i return ...

  10. 2018-2019-1 20189203 《Linux内核原理与分析》第七周作业

    第一部分 实验 增加fork命令,运行MenuOS 如下: 设置断点: 跟踪调试过程: 停在的do_fork()的位置上 停在copy_process 停在dup_task_struct 停在copy ...