`
dove19900520
  • 浏览: 599647 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

JS的四种数组去重方式

阅读更多

今天去面试,其他有这么一道题,给出一个js数组,然后把数组中重复的元素去掉。当时没怎么想到好方法,就直接用的循环套循环的方式做的,现在网上搜了一下,发现还有更好的方式,总共整理了四种:

 

function getArray(){
		var arr = [];
		for(var i = 0; i < 10000; i++){
			arr[i] = (Math.random() * 100);
		}
		console.log(arr);
		return arr;
	};
	
	//此方法就是用的纯粹的循环套循环
	function unique1(array) {
		var starttime = new Date().getUTCMilliseconds();
		var newArray = [];
		var len = array == undefined ? 0 : array.length;
		for(var i = 0; i < len; i++) {
			var count = 0;
			for(var j = 0; j < newArray.length; j++) {
				if(newArray[j] == array[i]) {
					count++;
					break;
				}
			}
			if(count == 0){
				newArray.push(array[i]);
			}
		}
		var endtime = new Date().getUTCMilliseconds();
		console.log("1---------耗时-------"+(endtime-starttime));
		return newArray;
	}
	//方法用的是hash表。把已经出现过的通过下标的形式存入一个object内。下标的引用要比用indexOf搜索数组快的多
	function unique2(array) {
		var starttime = new Date().getUTCMilliseconds();
		var newArray = [];
		var hash = {};//作为hash表
		var len = array == undefined ? 0 : array.length;
		for(var i = 0; i < len; i++){
			if(!hash[array[i]]){
				newArray.push(array[i]);
				hash[array[i]] = true;//将数组元素已下标的形式存入hash表中
			}
		}
		var endtime = new Date().getUTCMilliseconds();
		console.log("2---------耗时-------"+(endtime-starttime));
		return newArray;
	}
	
	//此方法的目的是利用indexOf寻找存入参数在数组中第一次出现的位置。很显然,js引擎在实现这个方法的时候会遍历数组直到找到目标为止。所以此函数会浪费掉很多时间。
	function unique3(array) {
		var starttime = new Date().getUTCMilliseconds();
		var newArray = [];
		var len = array == undefined ? 0 : array.length;
		for(var i = 0; i < len; i++){
			if(newArray.indexOf(array[i]) == -1){
				newArray.push(array[i]);
			}
		}
		var endtime = new Date().getUTCMilliseconds();
		console.log("3---------耗时-------"+(endtime-starttime));
		return newArray;
	}
	
	//先排序,在相邻的两个元素比较,不同的话存入新数组,相同就不存
	function unique4(array) {
		var starttime = new Date().getUTCMilliseconds();
		var newArray = [];
		var len = array == undefined ? 0 : array.length;
		if(len > 0) {
			array.sort();
		}
		newArray[0] = array[0];
		for(var i = 1; i < len; i++){
			if(array[i] != array[i-1]){
				newArray.push(array[i]);
			}
		}
		var endtime = new Date().getUTCMilliseconds();
		console.log("3---------耗时-------"+(endtime-starttime));
		return newArray;
	}
	
	var array = getArray();
	unique1(array);
	unique2(array);
	unique3(array);
	unique4(array);

 

自己测试中,总觉得第二种效率最高,不知道其他各位大神有什么好的见解。

分享到:
评论

相关推荐

    php数组去重和js数组去重最简方法

    对于JavaScript数组去重,有多种简单的方法。首先是使用ES6的Set对象,Set类似于数组,但不允许重复值: ```javascript let uniqueArray = [...new Set(array)]; ``` 这段代码首先创建一个Set,然后使用扩展运算符`...

    JavaScript数组去重功能的设计与实现.pdf

    JavaScript数组去重功能的设计与实现 ...本文详细介绍了JavaScript数组去重功能的设计与实现,提出了四种解决JavaScript数组去重问题的方法。这些方法可以有效地解决JavaScript数组去重问题,提高数据处理效率。

    JavaScript Array数组去重源码下载

    JavaScript Array数组去重源码下载

    javascript实现数组去重的多种方法_.docx

    javascript 实现数组去重的多种方法_ javascript 实现数组去重的多种方法是指使用javascript 语言实现数组去重的多种方法。数组去重是指将数组中重复的元素删除,得到一个没有重复元素的新数组。下面将介绍多种实现...

    高性能js数组去重(12种方法,史上最全)

    数组去重,一般都是在面试的时候才会碰到,一般是要求手写数组去重方法的代码。如果是被提问到,数组去重的方法有哪些?你能答出其中的10种,面试官很有可能对你刮目相看。 在真实的项目中碰到的数组去重,一般都是...

    js字符串去重、json数组去重.txt

    js对字符串(逗号隔开的)进行去重操作;js对json数组进行去重操作(指定某个属性),开发中经常遇到的前端小方法,简单实用

    JavaScript数组去重的方法总结【12种方法,号称史上最全】

    本文实例总结了JavaScript数组去重的方法。分享给大家供大家参考,具体如下: 数组去重,一般都是在面试的时候才会碰到,一般是要求手写数组去重方法的代码。如果是被提问到,数组去重的方法有哪些?你能答出其中的...

    JS实现数组去重方法总结(六种方法)

    文章内容介绍了六种不同的JavaScript数组去重方法,下面对这些方法的知识点进行详细说明。 方法一:双层循环去重 这种方法使用了双层循环来遍历数组元素,外层循环遍历数组的每一个元素,内层循环则用来检查当前...

    js数组去重的N种方法(小结)

    在JavaScript中,数组去重是一个常见的需求,旨在从数组中删除重复的元素,仅保留唯一的元素。本文介绍了多种js数组去重的方法,并按照ES5和ES6的标准进行了区分。以下是对这些方法的知识点总结。 1. ES5 实现方法...

    js代码-数组去重相加

    本项目“js代码-数组去重相加”旨在提供一种解决方案,以有效地处理包含重复元素的数组,并对其中的数值进行求和。下面我们将深入探讨这两个核心概念。 一、数组去重 在JavaScript中,数组去重有多种方法: 1. **...

    vue中对象数组去重的实现

    在Vue中实现对象数组去重的一个常用方法是利用`Map`对象。`Map`对象会存储键值对,并且任何值(对象或原始值)都可以作为键或值,这就为我们的去重提供了便利。具体实现方式是通过遍历数组,以对象中某个特定属性...

    javascript实现数组去重的方法

    数组去重是一个比较常见的算法考察点,实现去重的方式无非就是唯一性或者非唯一性,简而言之,就是选出唯一的或者去掉不唯一的,下面总结了几种方法。 方法一:利用双层for循环通过原数组去重,就是遍历数组,把数组...

    js实现数组去重(5种方式,代码中有注释解释原理)

    js实现数组去重(5种方式,代码中有注释解释原理)

    数组去重.zip

    总结来说,JavaScript中数组去重有多种方法,每种方法都有其适用场景。在实际开发中,应根据数据量、性能需求以及是否需要保留原始顺序来选择合适的方法。在追求代码简洁性和执行效率之间找到平衡,是JavaScript...

    js数组去重

    这个代码可以帮你将数组中重复的元素筛选掉,不妨一试

    js数组去重使用es6的Set集合实现

    js数组去重

    javascript实现数组去重的多种方法

    实现方法比较简单,实现的方式也比较多,很多大牛也写过相关的文章,之所以写这边博客,旨在一是备忘,二是给初学者能更好的理解其实现的原理,好,我们看第一种实现方式: 第一种,通过遍历新数组来去重 var

    js数组去重-duplicateRemoval

    在JavaScript编程中,数组去重是一项常见的操作,特别是在处理数据集合时。本篇文章将深入探讨如何...在"js数组去重-duplicateRemoval"的示例中,`duplicateRemoval.js`可能包含了上述方法之一的实现,供学习和参考。

    多维数组和对象-深去重和深拷贝.js

    对多维数组,对象,进行去重,相同的值只保留一个,常见的new Set()和filter,只能去重一维数组,并不能进行深层的去重,逻辑:判断是否为对象,为对象判断是否为数组或是真的对象,递归一直筛选为值,判断首次...

Global site tag (gtag.js) - Google Analytics