1. 简单的去重方法,利用数组的indexOf下标属性来查询

/*
* 新建一新数组,遍历传入数组,值不在新数组就push进该新数组中
* IE8以下不支持数组的indexOf方法
* */
function newArr(nArr) {var arr = [];for(var i = 0; i < nArr.length; i++){if(arr.indexOf(nArr[i]) === -1){arr.push(nArr[i]);}}return arr;
}

  2.  利用双层for循环来判断

/*
*  定义一个新数组,并存放原数组的第一个元素,
*  然后将原数组和新数组一一对比,如果不同则存放新数组中。
* */
function unique(arr) {let res = [arr[0]];for(let i = 1; i < arr.length; i++){let repeat = false;for(let j = 0; j < res.length; j++){if(arr[i] === res[j]){repeat = true;break;}}if(!repeat){console.log(arr[i]);res.push(arr[i]);}}return res;
}

  3  利用数组原型对象上的includes方法。(ES6新增的)

function uniques(arr) {let res = [];for(let i = 0; i < arr.length; i++){if(!res.includes(arr[i])){res.push(arr[i]);}}return res;
}

  备注:  传统上只有indexOf一个方法,来判断一个字符串是否包含在另一个字符串当中,ES6后来新增三个方法:

  a. includes(string, n) 返回 布尔值,表示是否找到了参数字符串。

  b. startsWith(string, n) 返回布尔值,表示参数字符串是否在原字符串的头部

  c. endsWith(string, n) 返回布尔值,表示参数字符串是否在原字符串的尾部。

  上面代码表示,使用第二个参数n时,endsWith的行为与其他两个方法有所不同。它针对前n个字符,而其他两个方法针对从第n个位置直到字符串结束。

  4. 利用数组原型对象上的 filter 和 includes方法

function uniques(arr) {let res = [];res = arr.filter(function (item) {return res.includes(item) ? "" : res.push(item);});return res;
}

  5. 利用Set数据结构和数组符号"..."来判断 或者利用 Array.from()来转换

function uniques1(arr) {return [...new Set(arr)];
}function uniques2(arr) {return Array.from(new Set(arr));
}

  备注: Array.from()方法就是将一个类数组对象或者可遍历对象转换成一个真正的数组。

  6. 利用对象属性存在的特性,如果没有该属性则存入新数组。

function uniques(arr) {let res = [];let obj = {};for(let i = 0; i < arr.length; i++){if(!obj[arr[i]]){obj[arr[i]] = 1;res.push(arr[i]);}}return res;
}

转载于:https://www.cnblogs.com/yyy6/p/9442983.html

JavaScript中数组去重汇总相关推荐

  1. Javascript中数组去重的六种方法

    数组去重 第一种方法: 先对数组进行排序sort(),排好序,然后把数组的当前项和后一项进行比较,相同则使用数组的splice(相同的位置,1),但是为了防止数组塌陷,每次删除数组元素的时候要把i的值 ...

  2. JavaScript中数组去重的几种方法整理

    本人菜鸡,前两天去面试,发现再次碰到数组去重这道面试题,比较常见.能够达到去重效果的方法有好几个,感觉有必要整理一下其中几种常见实现: 1,思路:创建一个空数组,然后循环需要去重的数组,对比创建的数组 ...

  3. Python JavaScript 的数组去重

    "数组去重" 是实际应用中常用的操作,出现在面试题中的概率也很高,今天简述一下 Python 和 JavaScript 中数组去重的方法 python数组去重 >>&g ...

  4. JavaScript中数组使用总结

    一. 数组的概念 1.1 什么是数组 数组是指的数据的有序列表. 数组中每个值称之为数组的一个元素. 数组中的每个元素都有一个位置,这个位置称之为索引(下标.index).数组的索引是从 0 开始的 ...

  5. java中字符串和数组如何比较_[Java教程]javascript中数组和字符串的方法比较

    [Java教程]javascript中数组和字符串的方法比较 0 2016-07-19 23:00:05 ×目录[1]可索引 [2]转换 [3]拼接[4]创建[5]位置 前面的话 字符串和数组有很多的 ...

  6. [乐意黎原创] JavaScript中数组使用总结

    原文地址:http://blog.csdn.net/u012468376/article/details/53147098 一. 数组的概念 1.1 什么是数组 数组是指的数据的有序列表. 数组中每个 ...

  7. php中不让数组初始化,javascript中数组与php数组初始化差异

    准确来说,javascript中我们需要称之为数组对象,因为数组就是对象,不信你看: var a=[1,2,3]; //竟然会弹出object alert(typeof(a)); 之前学习php的时候 ...

  8. Js中数组去重的几种方法

    前几天在看前端面试题的时候,其中js部分有个问题是实现数组去重的算法,一开始就想了一两种方法,后来仔细回忆了下这个题,觉得该问题实现方法确实不止局限于一两种方法 ,从不同的角度去看待该问题就会有多种实 ...

  9. JavaScript中数组slice和splice的对比小结

    前言 今天重温了一下Javascript,看到了数组的方法,其中有两个比较相似的方法--splice和splice,看着很像,就是多了一个p,但是用法却相当不一样. 在使用中,可以通过选择一个具有强语 ...

最新文章

  1. logstash tcp multihost output(多目标主机输出,保证TCP输出链路的稳定性)
  2. python编程小游戏代码-Python小游戏之300行代码实现俄罗斯方块
  3. nyoj-20--吝啬的国度-DFS+vector
  4. 转帖不会乱码的,powershell网络蜘蛛
  5. 深度学习(八)caffe源码学习-未完待续
  6. Kaggle 数据清洗挑战 Day 1 - 手把手教你五步处理缺失值
  7. web自动化框架抽取示例【Java+selenium】
  8. Apache Server搭建独立图片服务器
  9. Mysql中索引的 创建,查看,删除,修改
  10. 计算机网络nos是什么意思,什么是网络操作系统(NOS)
  11. [Verilog]半减器,全减器设计
  12. Squid在Windows平台搭建代理服务器
  13. 苹果保修期多久_识别苹果二手机
  14. http前后端传参写法
  15. 驱动辅助资料(工具,目录,指令,debug经验)
  16. 独孤思维:没有复盘的项目,不会赚钱
  17. JQuery入门级-基础
  18. word论文排版插件_有了这3个Word插件,各种Word难题都能迎刃而解!
  19. Mysql偶尔连接失败的问题
  20. 【论文阅读】GaitSet: Regarding Gait as a Set for Cross-View Gait Recognition

热门文章

  1. MySQL图形化管理器——EMS SQL Management Studio
  2. [转]学会使用DB2指令
  3. Oracle多行记录合并/连接/聚合字符串的几种方法
  4. wcf学习(一):预览
  5. 【恋上数据结构】插入排序及二分搜索优化
  6. python笔记01_高级特性和函数式编程
  7. NB朴素贝叶斯理论推导与三种常见模型
  8. KANO模型,一个能解决你工作中90%烦恼的需求分析神器
  9. flex AdvancedDataGrid 高级表格 介绍 教程
  10. 写个脚本快速启动前后端