JavaScript去掉数组中的重复元素

题目:去掉数组[4,3,"3",3,5,7,5]中的重复元素,返回[4,3,"3",5,7]

(function() { 'use strict'; function filter1(arr) { var b = []; arr.forEach(function(i) { if (b.indexOf(i) == -1) { b.push(i); } }); return b; } function filter2(arr) { var b = {}, c = []; arr.forEach(function(i) { b[i] = b[i] ? b[i] : {}; var type = typeof i; if (!b[i][type]) { b[i][type] = true; c.push(i); } }); return c; } function filter3(arr) { var s = new Set(); arr.map(x => s.add(x)); return s; } function timer(fn, arr) { console.time('filter'); fn.call(this, arr); console.timeEnd('filter'); } function testArr(n) { // var arr = [4,3,"3",3,5,7,5]; var arr = []; for (var i = 0; i < n; i++) { arr.push(i); arr.push(i + ""); } return arr; } for (var i = 1; i <= 100; i++) { console.log(i * 10); var arr = testArr(i * 10); timer(filter1, arr); timer(filter2, arr); timer(filter3, arr); } })();

当数组长度短的时候,经常filter1的速度快于filter2(例如题目中的数组,采用filter1相对比较快),当数组长度不断增长时,两种方式的差距就体现出来了。filter3速度最快,但是目前还不能广泛使用。

数组长度1000时:

  • filter1: 28.24ms
  • filter2: 1.81ms
  • filter3: 0.42ms

可以感受一下。

有其它方法否?


ES6新特性

var s = new Set(); [4, 3, "3", 3, 5, 7, 5].map(x => s.add(x)); console.log(s); Set [ 4, 3, "3", 5, 7 ]

部分浏览器实现。

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

java将前端的json数组字符串转换为列表

记录下在前端通过ajax提交了一个json数组的字符串,在后端如何转换为列表。前端数据转化与请求varcontracts{id:'1',name:'yanggb合同1'},{id:'2',name:'yanggb合同2'},{id:'3',name:'yang

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )