数组去重复是一个常见的需求,我们暂时考虑同类型的数组去重复。主要是理清思路和考虑下性能。以下方法,网上基本都有,这里只是简单地总结一下。
思路:
- 遍历数组,一一比较,比较到相同的就删除后面的
- 遍历数组,一一比较,比较到相同的,跳过前面重复的,不相同的放入新数组
- 任取一个数组元素放入新数组,遍历剩下的数组元素任取一个,与新数组的元素一一比较,如果有不同的,放入新数组。
- 遍历数组,取一个元素,作为对象的属性,判断属性是否存在
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 -- 将数组的内部指针指向第一个单元 说明 ...
随机推荐
- hadoop生态搭建(3节点)-01.基础配置
# 基础配置# ==================================================================node1 vi /etc/hostname nod ...
- django之多表查询
一.创建模型 在Models创建如下模型: from django.db import models # Create your models here. # 用了OneToOneField和Fore ...
- Leecode刷题之旅-C语言/python-83删除排序链表中的重复元素
/* * @lc app=leetcode.cn id=83 lang=c * * [83] 删除排序链表中的重复元素 * * https://leetcode-cn.com/problems/rem ...
- windows程序内部运行机制
Windows程序内部运行机制 2007-10-21 19:52 1010人阅读 评论(0) 收藏 举报 windowsvc++applicationcallbackwinapistructure W ...
- java性能测试工具 jprofiler
1.下载地址 官方网址:http://www.ej-technologies.com/products/jprofiler/overview.html 2.Eclipse集成 该文(http://ji ...
- 利用JS调取电脑摄像头,实现拍照功能
1.调取电脑摄像头非常简单,看代码一幕了然 window.addEventListener("DOMContentLoaded", function() { var canvas ...
- 0301001_Lesson1&2
Lesson 1 Excuse me! 对不起! Listen to the tape then answer this question.Whose handbag is it?听录音,然后回答问题 ...
- 获取单片机唯一id(stm32获取单片机唯一id)
stm32唯一id: 不同型号的stm32单片机,id不在同一地址上!具体地址可以通过用户手册中的Device electronic signature>Unique device ID reg ...
- MinGW安装图文教程以及如何配置C语音编程环境
MinGW安装图文教程以及如何配置C语音编程环境 转载自:http://www.jb51.net/softjc/192017.html MinGW 是一组包含文件和端口库,其功能是允许控制台模式的程序 ...
- Linux-Qt Quick学习1-Hello world
Qt作为共平台的开发IDE.实在是强大,在Quick的学习中,与平台无关,我这里使用ubuntu和openSUSE,之所以不用Windows,是因为我想借这个机会过学习一点linux的东西,哪怕是熟悉 ...