数组去重或者其衍生作为笔试题或者机试题出现的几率也是很大的,写出的方法越多,则让面试官觉得你思维越开阔,那么成功的几率当然就大了。

废话不多说,下面来说说下面我整理的4中数组去重的方法

方法一: findInArr方法+select方法组合

  findInArr : 查找一个数在当前数组中是否存在,存在返回true,找完所有没有找到,返回false,这个数就是我们要操作的那个数组

  select      :循环数组,并调用findInArr方法 查找当前arr[i]在arr2中是否存在,如果返回false 那么就把当前这个数 arr[i] ,push到新的数组 arr2中,最后return arr2

 1 function findInArr(n ,arr){
 2     for (var i = 0; i < arr.length; i++) {
 3         if (n == arr[i]) {
 4             return true;
 5         }
 6     }
 7     return false;
 8 }
 9 function select (arr){
10     var arr2 = [];
11     for(var i = 0; i < arr.length; i++){
12         if (!findInArr(arr[i],arr2)) {
13             arr2.push(arr[i]);
14         }
15     }
16     return arr2;
17 }

View Code

方法二 :利用json特性 

  创建一个空的json,通过对key的检索,---> !json[arr[i]],取反说明不存在

  这样我们可以对其进行赋值,json[arr[i]] = true;  对于 赋什么值,随意,保证它的键值对就行

  并且把当前这个数push 或者其他方式都行 ,总是添加到新数组 arr2中,最后return arr2

 1 function select (arr){
 2     var json = {};
 3     var arr2 = [];
 4     for (var i = 0; i < arr.length; i++) {
 5         if (!json[arr[i]]) {
 6             json[arr[i]] = true;
 7             arr2.push(arr[i])
 8         }
 9     }
10     return arr2;
11 }

View Code

方法三: 相邻数比较法,这个方法前提是先用sort 进行简单排序,不需要改进版的

  经过sort排序之后,我们不论它排序是否正确,但是有一点我们能确定,那就是相同的一定被排到了一起

  那么我们对排序之后的数组遍历,并且让当前的数和下一个数进行比较,如果相等那么用splice(i,1) 方法对其进行删除,这时候i的值需要 i--,避免它少比一次,最后return arr;

 1 function select(arr){
 2     arr.sort();
 3     for (var i = 0; i < arr.length; i++) {
 4         if (arr[i] == arr[i+1]) {
 5             arr.splice(i,1)
 6             i--;
 7         }
 8     }
 9     return arr;
10 }

View Code

方法四:使用数组的indexOf方法 (IE8--不兼容)

  通过判断arr2.indexOf(arr[i]) == -1 ,来确定新数组arr2中没有arr[i],并将其添加到数组arr2中,最终返回 arr2

1 function select (arr){
2     var arr2 = [];
3     for( var i = 0; i < arr.length; i++){
4         if (arr2.indexOf(arr[i]) == -1) {
5             arr2.push(arr[i])
6         }
7     }
8     return arr2;
9 }

View Code

  上述四中方法肯定存在的性能的差异,可以从速度上,所占内存等进行比较,我没有测过所以就不妄加定论。希望测过的朋友,能告知 。谢谢

转载于:https://www.cnblogs.com/NTWang/p/6246621.html

面试题——4种数组去重的方法相关推荐

  1. 超全的12种数组去重的方法

    前言 数组去重,可以说是一个比较常见的面试题,今天来盘点一下都有哪些方法可以实现数组去重. 方法1.双重for循环 这是一个最笨的方法,双重循环. var arr = [1, 2, 3,4 ,5,6, ...

  2. 面试题----几种数组去重方式

    数组去重的几种方法 1.使用数组方法indexOf来判断 IE8--不兼容 function sele(arr){var temp = [];for( var i = 0 ; i < arr.l ...

  3. C语言之容易想到的一种数组去重排序方法

    直接上代码 #include<stdio.h> int main() {int a[1000]={0},cpy[1000]={0},flag,temp;int N,n,j,k,i,num= ...

  4. Java数组去重的多种方法,[Java教程]JavaScript常见的五种数组去重的方式

    [Java教程]JavaScript常见的五种数组去重的方式 0 2016-12-14 15:00:17 ▓▓▓▓▓▓ 大致介绍 JavaScript的数组去重问题在许多面试中都会遇到,现在做个总结 ...

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

    总结一下JS中用到的数组去重的方法  方法一: 该方法利用对象的属性值不能相同: function arrDelLikeElement (array) {const result = [];const ...

  6. 数组去重 php,PHP编程快速实现数组去重的方法详解

    本文实例讲述了PHP编程快速实现数组去重的方法.分享给大家供大家参考,具体如下: 概述 使用PHP的array_unique()函数允许你传递一个数组,然后移除重复的值,返回一个拥有唯一值的数组.这个 ...

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

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

  8. js数组去重的方法:

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

  9. 【ES6】最简单的对象数组去重的方法

    对象数组去重的方法 // arr传数组名,attr传属性名 const uniqueArr=(arr,attr)=> {const res = new Map();return arr.filt ...

最新文章

  1. python 抛出异常raise
  2. springboot整合mybatis记录
  3. STM32在定时器中控制步进电机
  4. android 模拟飞行,安卓版模拟飞行 X Plane 9试玩
  5. 黑马程序员-JavaSE核心知识-03第一个Java程序
  6. 浅谈MySQL的七种锁
  7. 传输层协议TCP和UDP的区别
  8. python分词统计词频_基于结巴分词做的全文分词统计词频小脚本
  9. Animate.css
  10. java 代码锁_Java 锁的知识总结及实例代码
  11. RabbitMQ的基本概念
  12. x264编码指南——码率控制
  13. 存储盟主将要退位云计算会是最后盟主?
  14. switch_case,,||,条件操作符和逗号操作符,循环语句
  15. Action以外的类中来获得Spring所管理的Service对象
  16. web文件服务器1台,WEB服务器及配件1台 - 千里马招标网
  17. windows无法格式化u盘_U盘无法打开提示格式化?4种方法快速拯救它
  18. Launcher folder、foldericon
  19. 计算机一级插入页码,计算机一级WPS考试:WPS文字中页码插入及排版技巧
  20. Python concurrent.futures 的 map 函数解释

热门文章

  1. 修改date格式 java_如何用Java更改日期格式?
  2. 操作系统--第一章 绪论(408计算机考研)
  3. 数据结构-栈之二进制转十进制和八进制
  4. 【目标分类_长尾分布问题】BBN:Bilateral-Branch Network _ CVPR2020
  5. 范数在机器学习中的作用_设计在机器学习中的作用
  6. 悟懂MapReduce,不纠结!
  7. 为什么有很多人认为“深圳是举全国之力发展起来的?
  8. 《北京作家》·史铁生·维格拉姆
  9. 网站搭建从零开始(四) 服务器的配置
  10. android 开启wifi失败,[求助]获取基站/wifi信息为空或失败