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

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

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

  1. /*
  2. * 定义一个新数组,并存放原数组的第一个元素,
  3. * 然后将原数组和新数组一一对比,如果不同则存放新数组中。
  4. * */
  5. function unique(arr) {
  6. let res = [arr[0]];
  7. for(let i = 1; i < arr.length; i++){
  8. let repeat = false;
  9. for(let j = 0; j < res.length; j++){
  10. if(arr[i] === res[j]){
  11. repeat = true;
  12. break;
  13. }
  14. }
  15. if(!repeat){
  16. console.log(arr[i]);
  17. res.push(arr[i]);
  18. }
  19. }
  20. return res;
  21. }

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

  1. function uniques(arr) {
  2. let res = [];
  3. for(let i = 0; i < arr.length; i++){
  4. if(!res.includes(arr[i])){
  5. res.push(arr[i]);
  6. }
  7. }
  8. return res;
  9. }

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

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

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

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

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

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

  1. function uniques(arr) {
  2. let res = [];
  3. res = arr.filter(function (item) {
  4. return res.includes(item) ? "" : res.push(item);
  5. });
  6. return res;
  7. }

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

  1. function uniques1(arr) {
  2. return [...new Set(arr)];
  3. }
  4.  
  5. function uniques2(arr) {
  6. return Array.from(new Set(arr));
  7. }

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

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

  1. function uniques(arr) {
  2. let res = [];
  3. let obj = {};
  4. for(let i = 0; i < arr.length; i++){
  5. if(!obj[arr[i]]){
  6. obj[arr[i]] = 1;
  7. res.push(arr[i]);
  8. }
  9. }
  10. return res;
  11. }

JavaScript中数组去重汇总的更多相关文章

  1. JavaScript中数组去重的几种方法

    JavaScript中数组去重的几种方法 正常情况下,数据去重的工作一般都是由后端同事来完成的,但是前端也要掌握好处理数据的能力,万一去重的工作交给我们大前端处理,我们也不能怂呀.现在我总结了一些去重 ...

  2. javascript中数组去重的4种方法

    面试前端必须准备的一道问题:怎样去掉Javascript的Array的重复项.在最近面试中,百度.腾讯.盛大等都在面试里出过这个题目.这个问题看起来简单,但其实暗藏杀机. 考的不仅仅是实现这个功能,更 ...

  3. 总结Javascript中数组各种去重的方法

    相信大家都知道网上关于Javascript中数组去重的方法很多,这篇文章给大家总结Javascript中数组各种去重的方法,相信本文对大家学习和使用Javascript具有一定的参考借鉴价值,有需要的 ...

  4. js中数组去重的几种方法

    js中数组去重的几种方法         1.遍历数组,一一比较,比较到相同的就删除后面的                 function unique(arr){                 ...

  5. javascript中数组的常用算法深入分析

    Array数组是Javascript构成的一个重要的部分,它可以用来存储字符串.对象.函数.Number,它是非常强大的.因此深入了解Array是前端必修的功课.本文将给大家详细介绍了javascri ...

  6. JavaScript Array 数组方法汇总

    JavaScript Array 数组方法汇总 1. arr.push() 从后面添加元素,返回值为添加完后的数组的长度 var arr = [1,2,3,4,5] console.log(arr.p ...

  7. JavaScript中数组操作常用方法

    JavaScript中数组操作常用方法 1.检测数组 1)检测对象是否为数组,使用instanceof 操作符 if(value instanceof Array) { //对数组执行某些操作 } 2 ...

  8. javascript中数组Array的方法

    一.常用方法(push,pop,unshift,shift,join)push pop栈方法,后进先出var a =[1,2,3];console.log(a.push(40)); //4 返回数组的 ...

  9. Javascript中数组

    Javascript中数组 1.什么是数组 所谓的数组就是一组数据的集合,在内存中表现为一段连续的内存地址(保存在堆内存) 2.创建数组的含义 创建数组的目的:就是为了保存更多的数据 3.数组的定义 ...

随机推荐

  1. CSS/H5保留显示 textarea输入的空格和换行

    .show { white-space: pre-wrap; }

  2. Spring Cloud微服务安全实战_4-2_常见的微服务安全整体架构

    这个图适用于中小公司的微服务架构 微服务:SpringBoot 写的Rest服务 服务注册与发现:微服务所必备的.每个微服务都会到上边去注册.不管是微服务之间的调用,还是服务网关到微服务的转发,都是通 ...

  3. [ZJOI2019]线段树(线段树,DP)

    又是神仙题. 要写博客太长了,先咕着.放个代码先. 为什么 fmul 在 linux 底下还被定义过了--能想象到我一发 CE 的绝望吗 qaq #include<bits/stdc++.h&g ...

  4. oracle 错误 TNS-01190与oracle 登入没反应操作

    1,问题描述 [oracle@node2 ~]$ lsnrctl stop LSNRCTL - Production on -MAY- :: Copyright (c) , , Oracle. All ...

  5. [原创]浅谈在创业公司对MVP的理解

    [原创]浅谈在创业公司对MVP的理解 目前自已所处的公司类似一个创业平台,我们内部会不断的去孵化不同方向的产品,产品经理经常谈到的一个词就是MVP,所以有必需要去了解下什么是MVP? 1 什么是MVP ...

  6. .NET Core:Api版本控制

    (1)先安装Microsoft.AspNetCore.Mvc.Versioning (2)在Startup的ConfigureServices方法中加入:services.AddApiVersioni ...

  7. mysql的varchar和oracle的varchar2、nvarchar2

    mysql的varchar长度表示字符长度,一个汉字和一个英文字母的长度都是1 实例:下面name字段定义为varchar(10),可存10个汉字和10个字母 oracle的varchar2长度表示的 ...

  8. Ansible17:Playbook之tags

    目录 简介 为task打tag 使用tag 执行指定tag的task 排除指定tag的task 查看playbook中的所有tag 打tag的几种方式 ansible内置tag 简介 在大型项目当中, ...

  9. [转帖]超能课堂(210) 笔记本中常说的PL1、PL2到底如何影响CPU性能?

    超能课堂(210)笔记本中常说的PL1.PL2到底如何影响CPU性能? https://www.expreview.com/71943.html 本文约 4070 字,需 7 分钟阅读 (切换至标准版 ...

  10. mysql中的回表查询与索引覆盖

    了解一下MySQL中的回表查询与索引覆盖. 回表查询 要说回表查询,先要从InnoDB的索引实现说起.InnoDB有两大类索引,一类是聚集索引(Clustered Index),一类是普通索引(Sec ...