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;
}
美的集团公司福利 814人发布