栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > Web开发 > JavaScript

几种常用的数组去重的方法及优缺点

JavaScript 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

几种常用的数组去重的方法及优缺点

方案一:数组双循环比较
  • 依次拿数组的每一项(排除最后一项:后面没有需要比较的内容了)
  • 和当前拿出项后面的每一项进行比较
  • 如果发现重复,把这个重复项再原有数组中删除(splice)

此方法特别浪费性能

var ary=[1,2,1,5,4,3,2,6];
for(var i=0;i
方案二:基于对象键值对方式去重
  • 基于对象的属性名不能重复,实现高性能的数组去重
  • 创建空对象
  • 依次遍历数组中的每一项,把每一项值,当做对象的属性名和属性值存起来
  • 存储之前判断对象中是否已经存在相同属性名(是否重复),把当前重复项在数组中移除
    var ary=[1,2,1,5,4,3,2,6],
	    obj = {}
    for(var i=0;i
方案三:利用set方法去重

如不考虑兼容问题,可利用es6语法,set()来实现去重

	var ary=[1,2,1,5,4,3,2,6],
		newAry=[];
		newAry = Array.from(new Set(ary))
		console.log(newAry)// [1, 2, 5, 4, 3, 6]
方案三:封装数组去重方法
	var ary=[1,2,1,5,4,3,2,6],
	function unique(ary){
		var obj={};
		//利用对象属性名不重复的原则,把数组每个的值作为属性名和属性值存到对象中,每次存储之前验证当前对象中是否已经存在(in/hasOwnProperty/属性值不是undefined),如果存在这个属性说明是重复项,那就把原有数组中移除;如果不存在,继续存储
		for(var i = 0; i 
方案四:基于内置类的原型扩展方法,供它的实例调取使用
var ary=[1,2,1,5,4,3,2,6]
//属性名命名时,可以加前缀,防止属性名冲突
Array.prototype.myUnique = function myUnique(){
	//方法中的this一般都是当前类的实例(我们要操作的数组)
	//操作this相当于操作ary,方法执行会改变原有数组
	var obj={};
	for(var i = 0; i 
数组排序
var ary=[1,2,1,5,4,3,2,6]
//sort是array.prototype内置的属性,而ary是一个实例,可以基于_proto_找到原型上的方法,然后d
ary.sort(function(a,b){
	return a- b;
}).reverse().slice(2,7).join('+').split('+').pop()//已经不是数组了
//js中的链式写法:保证每一个方法执行返回的结果依然是当前类的实例,这样就可以继续调取方法使用了
转载请注明:文章转载自 www.mshxw.com
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号