csdn_jlt0 2015-12-06 12:05 采纳率: 50%
浏览 4788
已采纳

用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;
}
  • 写回答

3条回答 默认 最新

  • Go 旅城通票 2015-12-07 02:11
    关注

    splice返回的是数组,不是数字。数组和数组对比除非你引用的是同一个,即使内容一样也不是对等的。。

         arr1.push(tmp);
        alert(JSON.stringify(arr1))//[[1]]
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 使用C#,asp.net读取Excel文件并保存到Oracle数据库
  • ¥15 C# datagridview 单元格显示进度及值
  • ¥15 thinkphp6配合social login单点登录问题
  • ¥15 HFSS 中的 H 场图与 MATLAB 中绘制的 B1 场 部分对应不上
  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配