写的几种数组去重方法:

第一种: [利用排序方法,然后比较当前元素与下一个元素是否相等]

function repeat1(arr)
{
var length = arr.length;
var result = [];
arr.sort();//这里是关键
for (var i = 0;i < length;i++) {
if (arr[i] !== arr[i+1]) {
result.push(arr[i]);
}
}
console.log(result);
}

第二种: [巧用一个indexOf方法来查找当前元素是否在一个字符串里.这里可以用array检索]

function repeat2(arr)
{
var length = arr.length;
var result = [];
for (var i = 0;i < length;i++) {
if (result.indexOf(arr[i]) === -1) {
result.push(arr[i]);
}
}
console.log(result);
}

第三种: [利用一个obj的key-value唯一来达到去重]

function repeat3(arr)
{
var length = arr.length;
var result = [],
obj = {};
for (var i = 0;i < length;i++) {
if ( ! obj[arr[i]]) {
obj[arr[i]] = 1;
result.push(arr[i]);
}
}
console.log(result);
}

----运行----

var tmp_arr = [1, 'ddd', '哈', '哈', 'ddd', 'ddd', '2', '1', 'i', 'i', NaN, NaN];
repeat1(tmp_arr);
repeat2(tmp_arr);
repeat3(tmp_arr);

----结果----

总结:::

这里的NaN是个非数字的特殊值, NaN === NaN 这里是为false , 所以一二种会有两个NaN;

1与"1" 是类型不同的数, 所有也会有一二种方法也会有两个数值;

最后一个方法是一个key-value 自然key是唯一的, 举个例子就会明白了-->>console.log({1:'wherein',"1":'wherein'});你看这里输出的是什么???  没错, 就是一个Object {1: "11"} , 这道理跟第三种的一样

{适合的可以参考下, 有错的希望能指出下[抱拳]}

Js 的几种去重(一维)的更多相关文章

  1. JS中的五种去重方法

    JS中的五种去重方法 第一种方法: 第二种方法:  第三种方法: 第四种方法: 第五种方法:优化遍历数组法 思路:获取没重复的最右一值放入新数组 * 方法的实现代码相当酷炫,* 实现思路:获取没重复的 ...

  2. JS中几种常见的数组算法(前端面试必看)

    JS中几种常见的数组算法 1.将稀疏数组变成不稀疏数组 /** * 稀疏数组 变为 不稀疏数组 * @params array arr 稀疏数组 * @return array 不稀疏的数组 */ f ...

  3. JS中数组对象去重

    JS数组去重 JS中对数组去重最好不要用unique方法,该方法主要是对dom节点数组的去重,如果对普通的数组元素去重只会去掉与之相邻的重复元素,也就是如果数组中还有不相邻的重复元素存在,将不会被去掉 ...

  4. MyEclipse取消验证Js的两种方法

    MyEclipse取消验证Js的两种方法 作者: 字体:[增加 减小] 类型:转载 通过js写一个web工程的相关页面时感觉很卡,修改内存也不行下面有两种解决方法,大家可以尝试下 前言:有时我们通过j ...

  5. [转]js中几种实用的跨域方法原理详解

    转自:js中几种实用的跨域方法原理详解 - 无双 - 博客园 // // 这里说的js跨域是指通过js在不同的域之间进行数据传输或通信,比如用ajax向一个不同的域请求数据,或者通过js获取页面中不同 ...

  6. 关于js中两种定时器的设置及清除(转载)

    1.JS中的定时器有两种: window.setTimeout([function],[interval]) 设置一个定时器,并且设定了一个等待的时间[interval],当到达时间后,执行对应的方法 ...

  7. JavaScript 基础——使用js的三种方式,js中的变量,js中的输出语句,js中的运算符;js中的分支结构

    JavaScript 1.是什么:基于浏览器 基于(面向)对象 事件驱动 脚本语言 2.作用:表单验证,减轻服务器压力 添加野面动画效果 动态更改页面内容 Ajax网络请求 () 3.组成部分:ECM ...

  8. HTML5结合CSS的三种方法+结合JS的三种方法

    HTML5+CSS: HTML中应用CSS的三种方法 一.内联 内联样式通过style属性直接套进HTML中去. 示例代码 <pstylepstyle="color:red" ...

  9. 异步加载js的三种方法

    js加载时间线 : 它是根据js出生的那一刻开始记录的一系列浏览器按照顺序做的事,形容的就是加载顺序,可以用来优化什么东西,理论基础,背下来. 1.创建Document对象,开始解析web页面.解析H ...

随机推荐

  1. ubuntu——更新、编译、启动内核

    步骤如下: 1.make mrproper Linux下面去编译项目之前,一般常会用make mrproper去先删除之前编译所生成的文件和配置文件,备份文件等,其中,mrproper和distcle ...

  2. ASP.NET MVC 自定义Razor视图WorkContext

    概述 1.在ASP.NET MVC项目开发的过程中,我们经常需要在cshtml的视图层输出一些公用信息 比如:页面Title.服务器日期时间.页面关键字.关键字描述.系统版本号.资源版本号等 2.普通 ...

  3. 卡特兰数(Catalan数)

    首先奉上高中的排列组合公式,防止某些人忘记了 卡特兰数: 规定h(0)=1,而h(1)=1,h(2)=2,h(3)=5,h(4)=14,h(5)=42,h(6)=132,h(7)=C(14,7)-C( ...

  4. EF--Code First配置问题

    用EntityFramework Reverse POCO Generator工具生成的连接:<add name="Base_dbContext" connectionStr ...

  5. ASP.NET Identity & OWIN 学习资料

    有关 ASP.NET Identity 的更多细节: http://www.asp.net/identity 从一个空项目中添加 ASP.NET Identity 和 OWIN 支持: http:// ...

  6. 转 springboot 监控点 简介

    Spring Boot Actuator监控端点小结  2016-12-24  翟永超  Spring Boot 被围观 7973 次另一篇简单介绍: HTTP://BLOG.720UI.COM/20 ...

  7. unity, water cube

    <纪念碑谷>里有一关开始是一个宝箱展开后里面有一个water cube,其中还有小鱼在游.如下截图: 因为我们知道<纪念碑谷>是unity做的,而现在正开始学unity,所以也 ...

  8. Linux下解压tar.xz

    tar xvJf  ***.tar.xz 注意零散文件,最好放到文件夹里

  9. MySQL 5.7 双主复制+keepalived,常规业务一般够用了

    业务需求: 为Zabbix搭建2个数据库,一个库给服务器监控用,一个库给网络监控用. 硬件: 两台服务器,硬盘是1.2 T SSD卡,内存128G 架构: 希望做双主复制+keepalived,架构大 ...

  10. 每日英语:Rethinking How We Watch TV

    To understand how much television could soon change, it helps to visit an Intel Corp. division here ...