数组去重复是一个常见的需求,我们暂时考虑同类型的数组去重复。主要是理清思路和考虑下性能。以下方法,网上基本都有,这里只是简单地总结一下。
思路:
- 遍历数组,一一比较,比较到相同的就删除后面的
- 遍历数组,一一比较,比较到相同的,跳过前面重复的,不相同的放入新数组
- 任取一个数组元素放入新数组,遍历剩下的数组元素任取一个,与新数组的元素一一比较,如果有不同的,放入新数组。
- 遍历数组,取一个元素,作为对象的属性,判断属性是否存在
1. 删除后面重复的:
2 |
//var a1=((new Date).getTime()) |
3 |
for(var i=0;i<arr.length;i++) |
4 |
for(var j=i+1;j<arr.length;j++) |
5 |
if(arr[i]===arr[j]){arr.splice(j,1);j--;} |
6 |
//console.info((new Date).getTime()-a1) |
7 |
return arr.sort(function(a,b){return a-b}); |
2. 这个是常规的方法,比较好理解,如果相同则跳出循环
02 |
//var a1=((new Date).getTime()) |
03 |
var b = [], n = a.length, i, j; |
04 |
for (i = 0; i < n; i++) { |
05 |
for (j = i + 1; j < n; j++) |
06 |
if (a[i] === a[j]){j=false;break;} |
09 |
//console.info((new Date).getTime()-a1) |
10 |
return b.sort(function(a,b){return a-b}); |
3. 这个我花了好长时间明白的,这里j循环虽然继续了,但是i值已经改变了。就等于是一个新的i循环:
02 |
//var a1=((new Date).getTime()) |
03 |
var b = [], n = a.length, i, j; |
04 |
for (i = 0; i < n; i++) { |
05 |
for (j = i + 1; j < n; j++) |
06 |
if (a[i] === a[j])j=++i |
08 |
//console.info((new Date).getTime()-a1) |
09 |
return b.sort(function(a,b){return a-b}); |
4. 保证新数组中的都是唯一的
02 |
//var a1=((new Date).getTime()) |
04 |
for(var i=0;i<ar.length;i++){ |
06 |
for(var j=0;j<m.length;j++) |
07 |
if(ar[i]===m[j]){f=false;break;}; |
09 |
//console.info((new Date).getTime()-a1) |
10 |
return m.sort(function(a,b){return a-b}); |
5. 用对象属性
2 |
// var a1=(new Date).getTime() |
4 |
for (var i=0;(m= ar[i])!==undefined;i++) |
5 |
if (!o[m]){n.push(m);o[m]=true;} |
6 |
// console.info((new Date).getTime()-a1) |
7 |
return n.sort(function(a,b){return a-b});; |
- PHP 二维数组去掉重复值并保持原结构
PHP 二维数组去掉重复值并保持原结构 直接上代码,解释很详细 //二维数组去掉重复值 function arrunique($a){ foreach($a[0] as $k => $v){ / ...
- 字符串数组(String []) 去掉重复值的方法
public class Demo { /** * 去掉重复值 */ public static void main(String[] args) { String test = "100, ...
- JS去除数组中重复值的四种方法
JS去除数组中重复值的四种方法 1 /// <summary> o[this[i]] = ""; } } newArr.p ...
- PHP如何去掉多维数组的重复值
1.定义函数 function array_unique_new($arr){ $t = array_map('serialize', $arr);//利用serialize()方法将数组转换为以字符 ...
- JS数组去掉重复元素
JS数组去掉重复元素,这里提供3中写法. var arr =[1,2,3,4,5,6,3,4,7,2,4,1,8]; 输出:[1,2,3,4,5,6,7,8]; 1.使用indexOf() arr.i ...
- js 判断数组包含某值的方法 和 javascript数组扩展indexOf()方法
var questionId = []; var anSwerIdValue = []; ////javascript数组扩展indexOf()方法 Array.prototype.indexOf ...
- php 检查该数组有重复值
if (count($array) != count(array_unique($array))) { echo '该数组有重复值'; }
- JavaScript移除数组元素减少长度的方法
JavaScript移除数组元素减少长度的方法,代码如下: //数组移除长度方法 var array=[]; array[0]="张三"; array[1]="李四& ...
- php 获取数组第一个值的方法分享
以下是对使用php实现获取数组第一个值的方法进行了详细的分析介绍,需要的朋友可以过来参考下 reset (PHP 3, PHP 4, PHP 5)reset -- 将数组的内部指针指向第一个单元 说明 ...
随机推荐
- sbt打包error(sbt.librarymanagement.ResolveException: unresolved dependency: org.apache.spark#spark-streaming;2.3.1: not found)
解决方法: 修改simple.sbt文件: cd /usr/local/spark/myapp/TestStream vim simple.sbt 切记:中间相连部分两个百分号一定要写上
- python3爬虫之开篇
写在前面的话: 折腾爬虫也有一段时间了,从一开始的懵懵懂懂,到现在的有一定基础,对于这一路的跌跌撞撞,个人觉得应该留下一些文字性的东西,毕竟好记性不如烂笔头,而且毕竟这是吃饭的家伙,必须用心对待才可以 ...
- admin添加用户时报错:(1452, 'Cannot add or update a child row: a foreign key constraint fails (`mxonline`.`django_admin_l
在stackoverflow找到答案: DATABASES = { 'default': { ... 'OPTIONS': { "init_command": "SET ...
- HDU暑假多校第八场G-Card Game
一.题意 给出N个卡牌,卡牌的正反两面具有两个数字,取值范围为[1,2*n],给出若干个默认正面向上的卡牌,求最小反转多少张卡牌可以使得,每张卡牌朝上的面上都有一个不同的数字,同时满足最小反转次数的反 ...
- 50-Identity MVC:DbContextSeed初始化
1-创建一个可以启动时如果没有一个账号刚创建1个新的账号 namespace MvcCookieAuthSample.Data { public class ApplicationDbContextS ...
- JVM内存管理机制和垃圾回收机制
JVM内存管理机制和垃圾回收机制 JVM结构 图片描述: java源码编译成class文件 class文件通过类加载器加载到内存 其中方法区存放的是运行时的常量.静态变量.类信息等,被所有线程共享 堆 ...
- 网页设计简史看设计&代码“隔膜”
本文来自网易云社区 作者:马宝 设计与代码之间隔膜所在?既然你诚心诚意地问了,我就大发慈悲地告诉你.为了防止地球被破坏,为了维护世界的和平,为了贯彻爱与真实的邪恶~,我是穿梭在前端与设计之间爱与美丽的 ...
- kindeditor 限制上传图片大小及宽高
进入:/kindeditor/plugins/image/image.js,替换其中的 self.plugin.imageDialog = function (options)方法,代码为: self ...
- 第二篇 Fiddler配置_浏览器&手机
什么是Fiddler? 网络项目的开发和测试中,Fiddler是强大的抓包工具,它的原理是以web代理服务器的形式进行工作的 ,可以说是非常常用的手头工具了,本文就Fiddler使用和配置进行说明. ...
- 孤荷凌寒自学python第七十四天开始写Python的第一个爬虫4
孤荷凌寒自学python第七十四天开始写Python的第一个爬虫4 (完整学习过程屏幕记录视频地址在文末) 今天在上一天的基础上继续完成对我的第一个代码程序的书写. 直接上代码.详细过程见文末屏幕录像 ...