[Javascript]数组去重的三种实现方式

news/2024/7/3 8:31:17

方式1:使用shift()获取并删除删除数组的第一个元素,判断这个元素是否还存在于数组中,如果存在则说明这个元素的是重复的;如果不存在,进行push()操作

function unique(a){
    if(Array.isArray(a)){
        var len = a.length,item;
        while(len--){
            item = a.shift();
            if(a.indexOf(item) === -1){
                a.push(item);
            }
        }
    }
    return a;
}

方式2:建立一个哈希表,通过对象属性查询去除重复元素

function unique(array){
    var hash = {},
        len = array.length,
        result = [],
        i;

    for(i = 0; i < len; i++){
        if(!hash[a[i]]){
            hash[a[i]] = true;
            result.push(a[i]);
        }
    }

    return result;
}

方式3:思路和方式2类似,但是简洁很多

function unique(arr) {
    var hash = {};
    return arr.filter(function (n) {
        hash[n] = (hash[n] || 0);
        return (++hash[n] <= 1);
    });
}

来源

个人博客


http://www.niftyadmin.cn/n/1176899.html

相关文章

Java成功的因素,自信是成功的决定因素。

Nothing succeeds like confidence.When you are truly confident,it radiates from you like sunlight,and attracts success to you like a magnet.信心成就一切&#xff0c;当你真正自信时&#xff0c;它就像灿烂的阳光一样从你身上散发出来&#xff0c;就像磁铁一样将成功吸…

WinForm 中 comboBox控件之数据绑定

http://www.cnblogs.com/peterzb/archive/2009/05/30/1491923.html 下面介绍三种对comboBox绑定的方式&#xff0c;分别是泛型中IList和Dictionary&#xff0c;还有数据集DataTable 一、IList 现在我们直接创建一个List集合&#xff0c;然后绑定 IList<string> list new…

基本概念学习(2004)---CP/M操作系统

CP/M其实就是第一个微机操作系统&#xff0c;享有指挥主机、内存、磁鼓、磁带、磁盘、打印机等硬设备的特权。通过控制总线上的程序和数据&#xff0c;操作系统有条不紊地执行着人们的指令&#xff0c;如同指挥一台晚会或乐队&#xff0c;高效率地合奏美妙的乐章。CP/M操作系统…

SDWebImage的原理 和 实现机制 --- tableView 滑动卡的问题

一、原理 1&#xff09;当我门需要获取网络图片的时候&#xff0c;我们首先需要的便是URl没有URl什么都没有&#xff0c;获得URL后我们SDWebImage实现的并不是直接去请求网路&#xff0c;而是检查图片缓存中有没有和URl相关的图片&#xff0c;如果有则直接返回image&#xff0c…

Linux-ls命令

-a 显示所有文件及目录 (ls内定将文件名或目录名称开头为"."的视为隐藏档&#xff0c;不会列出) -l 除文件名称外&#xff0c;亦将文件型态、权限、拥有者、文件大小等资讯详细列出 -h 用"K","M","G"来显示文件和目录的大小。-r 将文…

Android研究之手PullToRefresh(ListView GridView 下拉刷新)使用具体解释

&#xfeff;&#xfeff;群里一哥们今天聊天偶然提到这个git hub上的控件&#xff1a;pull-to-refresh &#xff0c;有兴趣的看下&#xff0c;样例中的功能极其强大&#xff0c;支持非常多控件。本篇博客具体给大家介绍下ListView和GridView利用pull-to-rerfesh 实现下拉刷新和…

2、明明的随机数

题目描述 明明想在学校中请一些同学一起做一项问卷调查&#xff0c;为了实验的客观性&#xff0c;他先用计算机生成了N个1到1000之间的随机整数&#xff08;N≤100&#xff09;&#xff0c;对于其中重复的数字&#xff0c;只保留一个&#xff0c;把其余相同的数去掉&#xff0c…

matlab之判断回文数,C++代码札记(四)判断一个数是否为回文数

&#xfeff;&#xfeff;/*判断一个数是否为回文数,要求一行显示8个,每个数占6列显示*/string 判断回文数(int 回文数 98){/*任意不超过10位的数*/int 数位[10]{0}, 位(0), 半(0);string 是否("是");do{数位[位] 回文数 % 10;} while (回文数 / 10);do{if (数位[-…