今天遇到一个数组去重的问题,如题

编写一个函数 unique(arr),返回一个去除数组内重复的元素的数组。例如:unique([0, 1, 2, 2, 3, 3, 4]) // => [0, 1, 2, 3, 4]
unique([0, 1, '1', '1', 2]) // => [0, 1, '1', 2]

比较容易想到的一种方法是利用indexOf方法:

 1 /*
 2 * 思路:新建一新数组,遍历传入数组,值不在新数组就push进该新数组中
 3 * IE8以下不支持数组的indexOf方法
 4 * */
 5 function unique(array){
 6     var temp = []; //一个新的临时数组
 7     for(var i = 0; i < array.length; i++){
 8         if(temp.indexOf(array[i]) == -1){
 9             temp.push(array[i]);
10         }
11     }
12     return temp;
13 }
14
15 var aa = [1,2,2,4,9,6,7,5,2,3,5,6,5];
16 console.log(unique(aa));

然后还可以排序后比较相邻项去重:

 1 /*
 2 * 思路:给传入数组排序,排序后相同值相邻,
 3 * 然后遍历时,新数组只加入不与前一值重复的值。
 4 * 但是会打乱原来数组的顺序
 5 * */
 6 function unique(array){
 7     array.sort();
 8     var temp=[array[0]];
 9     for(var i = 1; i < array.length; i++){
10         if( array[i] !== temp[temp.length-1]){
11             temp.push(array[i]);
12         }
13     }
14     return temp;
15 }
16
17 var aa = [1,2,"2",4,9,"a","a",2,3,5,6,5];
18 console.log(unique(aa));

做题时刚掌握了一种方法:

[搬运] 新特性的写法

1 const unique = (arr) => /*TODO*/Array.from(new Set(arr))

只需要一行代码就够了,新特性简直不要太好用

转载于:https://www.cnblogs.com/tttty/p/10537574.html

javascript 练习(2)——js数组去重相关推荐

  1. html怎么创建数组,js创建数组的三种方法 JS数组去重的几种常见方法

    JS数组有哪几种定义方式? js 里创建一个数组 那几种方式有什么区别吗?a = new Array(); b = []; 性能问题吗?? function clear(arr) { // 1 如何获 ...

  2. js数组去重(多种方法)

    1 // js数组去重 2 Array.prototype.fun1 = function(){ 3 var arr = this, 4 result = [], 5 i, 6 len = arr.l ...

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

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

  4. js数组去重解决方案

    js数组去重解决方案 参考文章: (1)js数组去重解决方案 (2)https://www.cnblogs.com/yxqd/p/10381932.html 备忘一下.

  5. JS数组去重方法记录

    js数组去重方法 1.遍历数组,建立新数组,利用indexOf判断是否存在于新数组中,不存在则push到新数组,最后返回新数组 代码如下(示 例): function getArray(ar) {va ...

  6. JS数组去重方法小结

    JS数组去重 看了网上很多数组去重方法,用的比较常见的大概就几种,今天想自己来做一个总结. 部分内容参考该博客 1 . 在原数组上操作(基本方法) 思路:利用循环嵌套,判断数组中每个元素与其后面的元素 ...

  7. JS数组去重算法实现

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

  8. 常用的js数组去重的方法

    常用的js数组去重的方法 1. 使用for循环去重 2.使用set对象去重 3.使用数组索引indexOf()方法搭配for循环去重 4.使用includes()方法搭配for循环去重 5.使用fif ...

  9. js数组去重和去空值

    //js数组去重和去空值 function funQC(arr){let newsArr = [];for (let i = 0; i < arr.length; i++) {if (isEmp ...

  10. js数组去重的方法:

    js数组去重:项目中需求是选择一些数据,但是不能重复出现同样的数据,这里就要用到JS数组去重,以下几种数组去重方法简单实用哦! 方法一:利用数组的indexOf方法去重 需求: 利用indexOf判断 ...

最新文章

  1. 微信小程序服务(功能)直达是什么?有什么作用?
  2. 抓球球的机器人应该怎么玩_闲鱼2019年应该怎么玩?闲鱼上面的几大规则
  3. 对话Linus Torvalds:大多黑客甚至连指针都未理解
  4. 采用keepalived施工可用性MySQL-HA
  5. Java笔试面试题001
  6. 中国智能座舱行业发展前景展望与投资战略规划研究报告2022年版
  7. c语言进程调度报告,操作系统C进程调度算法实验报告
  8. 三星mega2 android os,三星G7508Q (Galaxy Mega 2 双4G)一键救砖教程,轻松刷回官方系统...
  9. ESXI6.7集成net55-r8168网卡驱动,支持部分PC
  10. 快速幂计算x的n次幂,递归版本、迭代版本、python实现
  11. 【C++】输出公元1900-2100年之间所有闰年的年号,每5个一行
  12. 第三章(第一部分) 月夜猫の魅 友谊的决裂
  13. 收缩毛孔全过程,很详细! - 健康程序员,至尚生活!
  14. 体验魅力Cognos BI 10 系列,第1 部分: 第一次安装
  15. Selenium之动作链(ActionChains)
  16. 西门子三菱台达PLC读取国网DLT645协议电表数据方案
  17. 一口气推荐16个让人震惊的黑科技工具
  18. C# ——字符添加角标
  19. 矩阵对矩阵求导,标量对矩阵求导,链式法则
  20. 植物大战僵尸python源代码_植的解释|植的意思|汉典“植”字的基本解释

热门文章

  1. php做微信小程序登录,php(ThinkPHP)实现微信小程序的登录过程
  2. php 自旋锁,Linux内核自旋锁使用笔记
  3. 零基础学前端开发之CSS基础
  4. window.navigator.userAgent用来区分设备和浏览器
  5. 飞机大战-控制玩家飞机左右移动
  6. python画一个祝福别人生日快乐_生日贺卡祝福语(精选50条)
  7. 【k8s学习笔记】第二篇:在Ubuntu系统中安装kubelet,kubeadm和kubectl
  8. 【搜索引擎Jediael开发笔记1】搜索引擎初步介绍及网络爬虫
  9. Loader之一:基本原理
  10. 第10课:动手实战基于 CNN 的电影推荐系统