使用JS给数组去重

news/2024/7/19 16:37:20 标签: web前端, JS, 数组, 去重

1、前言

关于数组大家应该很熟悉吧。做java后台的程序员给集合容器去除重复,都会选择Set这个容器自动给元素去重,这个方法简单有效。但是在web前端,如何在JS中给数组去重呢?

2、JS数组去重的思想

/**
    js对象中的属性都会具有唯一性,重复的属性值会直接覆盖原值。比如:
*/

//定义一个对象
var obj = {};

obj.name = "上海";
obj.name = "北京";

//在控制台输出结果:北京(覆盖原值上海)
console.log(obj.name);

/**
    实际上对象保存的结果应该是这样的:obj[key] = value;
    name作为key值唯一存在。所以去重的时候,把数组的值作为对象的key值,然后赋一个常量值,就会自然给数组去重。
    实现的过程中需要实现对象和数组之间的转化。
*/

3、JS代码及说明

//数组原型
var arr = [5,6,8,8,5,9,6,'true',new Date()];

/**
    实现方法:
*/
//将数组转化对象
function toObj(arr){
    var obj = {};
    for(var i = 0; i < arr.length; i++){
        //把数组的值作为obj的key,并赋常量值(可随意赋一个固定值)
        obj[arr[i]] = true;
    }
    return obj;
}

//将对象转化成数组
function toArr(obj){
    var array = [];
    //遍历对象的属性
    for(var attr in  obj){
        //将对象的属性重新放到数组
        array.push(attr);
    }
    //这是的数组已经没有重复的元素
    return array;
}
//控制台输出结果
console.log("原数组:" + arr);
console.log("去重后的数组:" + toArr(toObj(arr)));       

4、结果显示

数组:           5,6,8,8,5,9,6,true,Thu Mar 23 2017 14:33:40 GMT+0800 (中国标准时间)
去重后的数组:      5,6,8,9,true,Thu Mar 23 2017 14:33:40 GMT+0800 (中国标准时间)

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

相关文章

[ZZ]敏捷团队中测试人员和开发人员的合理比例?

作者 Chris Sims译者 张晓庆 发布于 2009年1月6日 上午7时5分 http://www.infoq.com/cn/news/2009/01/tester-to-developer-ratio 社区 Agile 主题 软件测试 标签 测试, 质量 软件开发世界里有这样一个长期存在的问题是&#xff1a;测试人员和开发人员的比例多少才合理&#xf…

使用JS模拟Map容器

1、前言 自己对JS的了解也不是很深入。最近看了一个视频&#xff0c;讲述JS的深入用法&#xff0c;感觉很有意思&#xff0c;就选择里面的一个小Demo&#xff08;模拟Map容器&#xff09;来体会一下JS的强大之处。2、思想 主要使用JS中对象的特殊性&#xff0c;使用obj[key]v…

我们做管理员必须知晓的安全

从系统管理员的角度讨论安全问题.系统管理员是管理系统的人:启动系统,停止系统运行,安装新软件,增加新用户,删除老用户,以及完成保持系统发展和运行的日常事务工作. 1.安全管理 安全管理主要分为四个方面: (1)防止未授权存取:这是计算机安全最重要的问题:未被使用系统的人进入系…

诺基亚为 Qt 增添 LGPL 授权选择

诺基亚为 Qt 增添 LGPL 授权选择 2009-01-14 Toy Posted in NewsRSS <script type"text/javascript"><!-- google_ad_client "pub-9432205671574187"; //LT, 300x250 google_ad_slot "9869120281"; google_ad_width 300; google_ad_…

SSM框架环境的简单搭建

1、前言 SSM框架是企业中常用的框架&#xff0c;是SpringMVCSpringMybatis框架的整合。框架的的核心思想就是将各个独立的框架都交给spring容器进行管理。2、SSM框架需要的依赖&#xff08;pom.xml&#xff09; <!--主要包含六部分内容&#xff1a;springmvc子容器的依赖&…

laydate 时间日历插件

1、前言 在处理页面表单的时候&#xff0c;会遇到日期类型的数据&#xff0c;我们可以通过时间插件的让用户来选择具体的时间&#xff0c;这样就会比较方便。今天记录一下laydate这个时间插件。 2、代码展示 <!DOCTYPE html> <html> <head lang"en"…

身边的经济学---如何做选择

经济学中有个术语叫“机会成本”&#xff0c;就是指你在得到一样东西的时候所放弃的那样东西。比如&#xff1a;如果你选择周六在公司加班&#xff0c;那你就放弃了与家人一起的这个“机会成本”。人们在得到一样东西的同时总是会放弃一样东西。 在我们的一生中会遇到无数的选择…

springmvc 框架中的数据的绑定:@InitBinder@DateTimeFormat()

1、前言 表现层经常会接受页面表单的数据&#xff0c;springmvc框架提供了封装javaBean的功能&#xff0c;但是针对一些特殊的属性&#xff0c;则不会自动封装&#xff08;比如java.util.Date类型&#xff09;&#xff0c;需要我们自行绑定。这里介绍两种解决的办法&#xff1…