js 数组去重(c方法、js方法、哈希法)

数组去重

	**方式一**
		让数组的元素和在这个元素之前的元素比较,如果有相等就换下一次比较
		
	**方式二**
		利用方法.indexOf(~);如果数组中不存在该值,则返回-1,即
		新数组.indexOf(旧数组值)==-1,则表明无该值,.push放入
	
	**方式三(hash去重,对象内部自带hash算法)**
		利用对象属性添加,如果属性内无该值,则添加到新数组和该对象内赋任意值,如果有则下一次循环
		
		缺点
			字符串和数字放进对象内做属性,都会变成字符串,所以无法区分1和'1'
		
		解决办法
			在对象内添加属性的时候,利用typeof,属性名带上数值类型
	
	**方式四**
		Array.from(new Set(value))
		
	**方式五**
		return [...new Set(value)]

代码示例:

<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
		
		<script>
		
			var arr=[1,2,3,4,5,6,7,8,1,2,3,9];
			var brr=[];
			var flag=0;
			var k=0;
			var crr[];
			//方式一
			for(var i=0;i<arr.length;i++)
			{
				for(var j=i-1;j>=0;j--)
				{
					if(arr[i]==arr[j])
					{
						flag=1;
					}
				}
				if(flag!=1){
				
					brr.push(arr[i]);
				}
				flag=0;
			}
			
			for(var i=0;i<brr.length;i++)
			{
				console.log(brr[i]);
			}
		//方式二
			for(var i=0;i<arr.length;i++)
			{
				if(result.indexOf(arr[i])==-1)
				{
					crr.push(arr[i]);
				}
				
			}
			
		console.log("-------------------------------")
		var obj={
			uname:"李白",
			sex:"男",
			age:"18",
			height:'180cm',
			weight:'75kg'
		};
		
		//方式三
		arr=[1,2,3,4,5,6,7,8,1,2,3,9];
		var result=[];
		
		var hash={};
		var type="";
		
		for(var i=0;i<arr.length;i++)
		{
			type=typeof arr[i]; //判断类型
			
			//[]可以将变量作为属性,如果没有该属性,则进入
			if(!hash[arr[i]]+type)//区分1和'1'
			{
				result.push(arr[i])
				hash[arr[i]+type]=true;//可以等于任意值
				
			}
		}
		
		
		
		</script>
	</body>
</html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值