• 1.利用标记
    1. var arr = [2,6,2,6,4,3,16];// arr = [2,6,4,3,16]
    2. function norepeat(arr){
    3. var res = [];
    4. for(var i=0;i<arr.length;i++){
    5. var flag = true;
    6. for(var j=0;j<res.length;j++){
    7. if(arr[i]==res[j]){
    8. flag = false;//将要推入新数组的数组元素 在新数组中有重复
    9. }
    10. }
    11. if(flag){
    12. res.push(arr[i]);
    13. }
    14. }
    15. return res;
    16. }
    17. console.log(norepeat(arr));
  • 2.indexOf()找对应的下标
    1. function norepeat(arr){
    2. var newArr = [];
    3. for(var i=0;i<arr.length;i++){
    4. if(newArr.indexOf(arr[i]) == -1){
    5. newArr.push(arr[i]);
    6. }
    7. }
    8. return newArr;
    9. }
    10. var arr = [1,2,3,5,6,1,2,5];
    11. console.log(norepeat(arr));
  • 3.Es5迭代方法filter() +indexOf
    1.   var arr = [1, 2, 3, 1, 2, 3, 5, 6, 4, 5];
    2. var newArr = arr.filter(function(value, index, array) {
    3. console.log(value,index,array);
    4. return arr.indexOf(value) == index;
    5. })
    6. alert(newArr);
  • 4.利用快速排序去重(比较麻烦的一种啦)
    1. function quickSort(arr) {
    2. if(Array.isArray(arr)) { //先判断是不是个数组
    3. if(arr.length <= 1) { //设置限定条件
    4. return arr;
    5. }
    6. var left = [];
    7. var right = [];
    8. var midIndex = Math.floor(arr.length / 2); //找中间索引
    9. var midValue = arr.splice(midIndex, 1); //找中间值
    10. for(var j = 0; j < arr.length; j++) {
    11. if(arr[j] < midValue) {
    12. left.push(arr[j]);
    13. }
    14. if(arr[j] > midValue){
    15. right.push(arr[j]);
    16. }
    17. }
    18. return quickSort(left).concat(midValue, quickSort(right)); //递归直至数组长度为1
    19.  
    20. } else {
    21. alert('请传个数组');
    22. }
    23. }
    24. var arr1 = [6, 2, 5, 7, 21, 1,2,5];
    25. console.log(quickSort(arr1));

js 数组去重常见的几种方式的更多相关文章

  1. JavaScript数组去重—ES6的两种方式

    说明 JavaScript数组去重这个问题,经常出现在面试题中,以前也写过一篇数组去重的文章,(JavaScript 数组去重的多种方法原理详解)但感觉代码还是有点不够简单,今天和大家再说两种方法,代 ...

  2. JS数组遍历的十二种方式

    遍历有如下几种方式 数组方法 map forEach filter find findIndex every some reduce reduceRight 其他方法 for for in for o ...

  3. 【js】js数组置空的三种方式

    方式1: var arr = new Array(1,2,3); alert(arr); arr.splice(0, arr.length); alert(arr); 方式2: var arr = n ...

  4. JS数组去重的几种常见方法

    JS数组去重的几种常见方法 一.简单的去重方法 // 最简单数组去重法 /* * 新建一新数组,遍历传入数组,值不在新数组就push进该新数组中 * IE8以下不支持数组的indexOf方法 * */ ...

  5. js数组去重的4种方法

    js数组去重,老生长谈,今天对其进行一番归纳,总结出来4种方法 贴入代码前 ,先对浏览器Array对象进行支持indexOf和forEach的polyfill Array.prototype.inde ...

  6. js数组去重五种方法

    今天来聊一聊JS数组去重的一些方法,包括一些网上看到的和自己总结的,总共5种方法(ES5). 第一种:遍历数组法 这种方法最简单最直观,也最容易理解,代码如下: var arr = [2, 8, 5, ...

  7. JS数组去重的6种算法实现

    1.遍历数组法 最简单的去重方法,实现思路:新建一新数组,遍历传入数组,值不在新数组就加入该新数组中:注意点:判断值是否在数组的方法"indexOf"是ECMAScript5 方法 ...

  8. js数组去重常用方法

    js数组去重是面试中经常会碰到的问题,无论是前端还是node.js数组常见的有两种形式,一种是数组各元素均为基本数据类型,常见的为数组字符串格式,形如['a','b','c'];一种是数组各元素不定, ...

  9. JS 数组去重(数组元素是对象的情况)

    js数组去重有经典的 几种方法 但当数组元素是对象时,就不能简单地比较了,需要以某种方式遍历各值再判断是否已出现. 因为: 1.如果是哈希判断法,对象作哈希表的下标,就会自动转换成字符型类型,从而导致 ...

随机推荐

  1. 小笔记:Timer定时间隔时间操作

    小笔记:Timer定时间隔时间操作,后面有时间再补充和完善: public class TimingSvc { /// <summary> /// 定时器,执行定时任务 /// </ ...

  2. PhpStorm使用之 —— Xdebug断点调试

    PhpStorm使用之 -- Xdebug断点调试 在<XAMPP的配置与使用>中已经阐述了Xdebug插件的配置,Xdebug配置完成后,只需要在IDE工具中进行相关设置,便可启动Xde ...

  3. hplus--H+ V2.3 (中文版)

    一个高大上的后台模板 演示地址 http://www.zi-han.net/theme/hplus/?v=4.1 下载地址 http://download.csdn.net/detail/u01197 ...

  4. Activiti中的log4j(slf4j)的配置

    今天试了一下在Activiti中使用log4j来进行配置发现这个会出现问题,其实Activiti中的日志系统是采用的是slf4j而不是log4j 然后使用slf4j驱动log4j来做的 通过Proce ...

  5. RegExp正则表达式规则以及常用正则表达式

    html,body { font-family: "SF UI Display", ".PingFang SC", "PingFang SC" ...

  6. mysql 学习心得3

    1 /0和 %0 都会显示null 2比较运算符大部分和c一样 ==在mysql是=  <>代表不等于 between 指定范围内 in指定几何 isnull 判断是否为null :is ...

  7. POJ - 3279 枚举 [kuangbin带你飞]专题一

    这题很经典啊,以前也遇到过类似的题--计蒜客 硬币翻转. 不过这题不仅要求翻转次数最少,且翻转方案的字典序也要最小. 解法:二进制枚举第一行的翻转方案,然后处理第二行,如果第二行的k列的上一列是黑色, ...

  8. webTest-----webUI自动化框架

    webTest框架介绍 地址 https://github.com/wuranxu/webTest 希望大家能够喜欢!!! 简介 本框架基于Python3+selenium3+unittest组成,用 ...

  9. python内置函数-compile()

    python的内置函数 compile()--编译. 这个函数有什么用呢? 一个最简单的例子, 就是我们的代码, 会被解释器读取,解释器读取后的其实是字符串, 然后通过compile编译后, 又转换成 ...

  10. HttpURLConnection发送请求

    每个 HttpURLConnection 实例都可用于生成单个请求,但是其他实例可以透明地共享连接到 HTTP 服务器的基础网络.请求后在 HttpURLConnection 的 InputStrea ...