数组去重
**方式一**
让数组的元素和在这个元素之前的元素比较,如果有相等就换下一次比较
**方式二**
利用方法.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>