问题描述
- 用js编写一个方法,去掉一个数组的重复元素
-
下面是我自己写的,刚学完js练练手。
调试过,发现tmp等于数组里的第二个1 并且arr1[0]等于1时,不等的条件语句竟然进去了
何解啊?
//////////////////////////////////////我简化了我的问题<script type="text/javascript"> var tmp=''; var arr=[1,2,'abc',1]; var arr1=[]; tmp=arr.splice(0,1); arr1.push(tmp); //tmp=arr.splice(2,1); //先注释这句运行一遍,在不注释运行一遍 if (tmp!=arr1[0]) { alert('tmp是:'+tmp+' '+'arr1[0]是:'+arr1[0]); alert('不等于'); }; alert('tmp的类型是:'+typeof(tmp)+' arr[0]的类型是:'+typeof(arr1[0])); </script> ////////////////////////////////取消注释 在运行 结果就通过条件了,为什么呢!! 麻烦各位帮我看看问题出在哪了,谢谢各位了。 var arr=[1,2,'abc',1,3,'abc']; alert(deleteRepeatElement(arr)); function deleteRepeatElement(arr) { var arr1=[]; var tmp='';//存放用 var a=0;//计数用 for (var i = 0; i < arr.length; i++) { tmp=arr.splice(0,1); if(arr1.length==0)//将最开始的数组得第一个元素放入arr1 { arr1.push(tmp); tmp=''; } else { for (var j = 0; j < arr1.length; j++) { if(tmp!=arr1[j]) //这里有问题!!!当tmp等于arr的第四个1的时候竟然进来了! { a++; } } if(a==arr1.length) { arr1.push(tmp); } tmp=''; i=-1; a=0; } } return arr1; }
解决方案
splice返回的是数组,不是数字。数组和数组对比除非你引用的是同一个,即使内容一样也不是对等的。。
arr1.push(tmp);
alert(JSON.stringify(arr1))//[[1]]
解决方案二:
解答一(推荐):
??????? var s = [0,2,3,4,4,0,2];
??????? for(var i=0,o={},tmp=[],count=0,l=s.length;i<l;i++){
?&nb......
答案就在这里:编写一个方法,去掉一个数组中的重复元素
解决方案三:
var tmp='';
var arr=[1,2,'abc',1];
var arr1=[];
tmp=arr.splice(0,1);
arr1.push(tmp);
//tmp=arr.splice(2,1); //先注释这句运行一遍,在不注释运行一遍
if (tmp!=arr1[0])
{
alert('tmp是:'+tmp+' '+'arr1[0]是:'+arr1[0]);
alert('不等于');
};
alert('tmp的类型是:'+typeof(tmp)+' arr[0]的类型是:'+typeof(arr1[0]));
时间: 2024-11-03 08:11:50