资讯专栏INFORMATION COLUMN

Javascript中数组去重的六种方法

CodeSheep / 813人阅读

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

数组去重

第一种方法:

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

        
        var ary=[1,23,4,2,33,1,2,44,3,2,3]
        ary.sort(function(a,b){
        return a-b;
        });//返回的是排好序的数组
    for(var i=0;i

第二种方法是:建立一个新数组,要是原数组里面的数是头一次出现(使用数组的indexOf()),那么就把这个数放到新数组里面,否者就抛弃这个数,类似于前面说的随机验证码

var ary=[1,23,4,2,33,1,2,44,3,2,3]

var arr2=[];
for(var i=0;i

第三种方法:直接拿当前项与后一项进行比较,相同的要删除,使用数组splice()进行删除,这里也要防止数组塌陷;

var ary=[1,23,4,2,33,1,2,44,3,2,3]
for(var i=0;i

第四种方法:利用对象不重名的特性,对象的存储是键值对方式,要获取属性值,要通过对象./[]属性来获取;相同则删除,也要防止数组塌陷

var ary=[1,23,4,2,33,1,2,44,3,2,3]
//新建一个对象
var obj={};
for(var i=0;i

第五种方法:也是利用对象不重名的方法,但是这次是直接计算其数组各个数的重复次数,

var ary=[1,23,4,2,33,1,2,44,3,2,3]
var obj={};
for(var i=0;i

第六种方法:使用ES6中的Set数据结构中重复项不生效的特性

let arr = [1,2,3,3,2,4,5];

let list = new Set(arr);

console.log("list",list);  // 1,2,3,4,5

但是对于数据的数据类型是不会进行转换的,所以一定要注意元素的数据类型是否是一致

数组去重的面试题:

找出这次考试中,最高分,及最高分出现的次数

//思路:全部人的成绩是一个数组,这就相当于使用数组去重的方法,找到最高的分数,和其次数,首先找到了去重的数组进行从小到大的排序,得到次数,然后通过最高分所对应的索引值得到出现的最高分

var ary = [1, 23, 4, 2, 33, 1, 2, 44, 3, 2, 3];
            var obj = {};
            for(var i = 0; i < ary.length; i++) {
                //把数组的值,当作对象的索引赋值给对象,所以通过对象索引获取的是数组出现的次数
                var cur = ary[i];
                if(obj[cur]) {
                    //每次重复一次,其对应的值加一
                    obj[cur]++;
                } else {
                    //说明没有重复,个数只有一个
                    obj[cur] = 1;
                }
            }
            //分数从低到高出现的次数
            console.log(obj);
            
            var ary2 = [];
            //对于对象使用in 方法进行遍历,遍历获取的是属性值
            for(var attr in obj) {
                ary2.push(Number(attr));
            }
            
            console.log(ary2);
            //最高分
            console.log(ary2[ary2.length-1]);
            var count=ary2[ary2.length-1];
            //最高分出现的次数
            console.log(obj[count]);

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/89563.html

相关文章

  • 区别对象和数组六种方法

    摘要:区别对象和数组的六种方法方法一利用方法通过调用方法试着将该变量转化为代表其类型的。该方法对于真正的可行参数对象转化为时返回会转化失败此外,对于含有数字长度属性的类也会转化失败。 区别对象和数组的六种方法(1)方法一:利用toString方法通过调用toString( )方法试着将该变量转化为代表其类型的string。该方法对于真正的array可行;参数对象转化为string时返回[ob...

    senntyou 评论0 收藏0
  • JavaScript专题之数组去重

    摘要:专题系列第三篇,讲解各种数组去重方法,并且跟着写一个前言数组去重方法老生常谈,既然是常谈,我也来谈谈。它类似于数组,但是成员的值都是唯一的,没有重复的值。 JavaScript 专题系列第三篇,讲解各种数组去重方法,并且跟着 underscore 写一个 unique API 前言 数组去重方法老生常谈,既然是常谈,我也来谈谈。 双层循环 也许我们首先想到的是使用 indexOf 来循...

    fsmStudy 评论0 收藏0
  • JavaScript数组重的总结

    摘要:数组去重方法的总结前言在中数组是比较常用的,本文中总结了下数组去重的几种常用方法,如有问题,请指正。 JavaScript数组去重方法的总结 前言 在JavaScript中数组是比较常用的,本文中总结了下数组去重的几种常用方法,如有问题,请指正。 简单粗暴的一种,ES6中set方法: var arr = [1,2,2,3,3,4,5,5]; console.log([...new Se...

    Tonny 评论0 收藏0
  • JS判断数组六种方法详解

    摘要:对象构造函数的判断用法的每个实例都有构造函数,用于保存着用于创建当前对象的函数如上所示,的实例的跟对象是相等的那么我们就可以用此来判断数组了原型链上的用法属性表示构造函数的原型其中有一个方法是用于测试一个对象是否存在于另一个对象的原型链上。 在JS中,数组是属于Object类型的,也就是属于引用类型(引用类型存放在堆内存中,在栈内存会有一个或者多个地址来指向这个堆内存)。 所以对于引用...

    xiaoxiaozi 评论0 收藏0
  • <javaScript> 数组重的方法总结(2017年)

    摘要:现在要求去重下面这个数组测试重复重复方法一测试重复重复去重后测试重复是新加的集合集合中的值不会重复。欢迎大家一起讨论提出新的去重方法。有任何错误请在评论指出。 现在要求去重下面这个数组 [1, 2, 3, 3, 3, 0, 1, 2, 测试, 重复, 重复, NaN, NaN, false, false]; 方法一:ES6 Set() let arr = [1, 2, 3, 3, 3,...

    hightopo 评论0 收藏0

发表评论

0条评论

CodeSheep

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<