js编程题里面的 数组去重问题!

如题:我的代码如下
Array.prototype.uniq = function(){
    var arr = this;
    var newArr = [];
     
    var obj = {};
    for(var i = 0;i < arr.length; i++){
         
        if(arr[i] && typeof arr[i] === 'object'){
            newArr.push(arr[i]);

            continue;
        }
        if(obj.hasOwnProperty(arr[i])){
           continue;
        }
        obj[arr[i]] = arr[i];
        newArr.push(arr[i]);
    }
    return newArr;
}
提交后说只通过了50%的测试用例!想不通。。。求大牛们帮帮忙。。纠结了好久了T T
-------------------------------------------------------------------
又考虑了2个漏点,但是结果还是50%,代码如下:(代码是丑了点~~~~~,但是现在不管了。。求帮忙想想还有什么可能
Array.prototype.uniq = function(){
    var arr = this;
    var newArr = [];
    var flag1,flag2;
    var obj = {};
    for(var i = 0;i < arr.length; i++){
        
        if(arr[i] && typeof arr[i] === 'function'){
            if(arr[flag2] == arr[i]){
                continue;
            }
            newArr.push(arr[i]);
            flag2 = i
            continue;
        }
        
        if(arr[i] && typeof arr[i] === 'object'){
            if(arr[flag1] == arr[i]){
                continue;
            }
            newArr.push(arr[i]);
            flag1 = i
            continue;
        }
        if(obj[arr[i]]){
           continue;
        }
        obj[arr[i]] = true;
        newArr.push(arr[i]);
    }
    return newArr;
}

全部评论
如果参数里面有数组是不是得递归呢?而且,这样写程序健壮性也不好,笔试能过,面试减分。
点赞 回复 分享
发布于 2017-03-17 09:10
Array.prototype.uniq = function () { var b={}; var brr; for(var i=0;i<this.length;i++){ if(!b[this.indexof(i)]) b[this.indexof(i)]=1; } else b[this.indexof(i)]++; for(var p in b){ brr.push(p); } return brr; }
点赞 回复 分享
发布于 2017-03-16 20:22
没有对NaN,null,undefined做出判断吧
点赞 回复 分享
发布于 2017-03-16 19:43
你这样写还能过50%数据啊…那数据太水了吧…
点赞 回复 分享
发布于 2017-03-16 18:54

相关推荐

12-27 22:49
门头沟学院 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务