Array.prototype.uniq = function () {
return [...new Set(this)]
} Array.prototype.uniq = function () {
return [...new Set(this)];
} Array.prototype.uniq = function () {
var newArr = []
var flag = true
for (var i = 0; i < this.length; i++) {
if (this[i] == this[i]) {
//当前值不为NaN
if (newArr.indexOf(this[i]) == -1) {
newArr.push(this[i])
}
}
else {
//当前值为NaN
if (flag) {
newArr.push(this[i])
flag = false
}
}
}
return newArr
} Array.prototype.uniq = function () {
const arr = this
const result = []
const loop = (index) => {
if (index >= arr.length) {
return
}
if (!result.includes(arr[index])) {
result.push(arr[index])
}
index ++
loop(index)
}
loop(0)
return result
} Array.prototype.uniq = function () { //es5解法的话可以不用箭头函数
let arr = [], flag = true;
this.forEach(item => {
if (item != item && flag) {
arr[arr.length] = item;
flag = false;
} else if (arr.indexOf(item) == -1 && item == item) {
arr[arr.length] = item
}
})
return arr;
};
Array.prototype.uniq = function () { //es6解法
return [...new Set(this)]
} /***
*
* ES6 使用集合直接进行去重操作
function unique(arr){
return [...new Set(arr)];
}
*/
Array.prototype.uniq = function () {
//1. 定义一个数组 和 标志位
let finalArr = [];
let flag = true;
// for循环操作
for (let i = 0; i < this.length; i++) {
// 使用indexOf方法 如果要检索的字符串值没有出现,则该方法返回 -1
if (finalArr.indexOf(this[i]) == -1) {
if (this[i] != this[i]) { //排除 NaN
if (flag) {
// 加入去重数组中
finalArr.push(this[i]);
// 改变标志位
flag = false;
}
} else {
//直接进行 push操作
finalArr.push(this[i]);
}
}
}
return finalArr;
} // 为什么这样写不通过
Array.prototype.uniq = function() {
return this.filter(function(ele,index,arr){
return index === arr.indexOf(ele);
});
};
//借用辅助数组来实现,遍历原数组,辅助数组中没有该元素就添加到辅助数组中去,最后返回这个辅助数组 Array.prototype.uniq = function () { var temp = []; var flag=false;//为了给NaN做标记,避免重复添加NaN到辅助数组中去 for(var i=0;i<this.length;i++){ if(temp.indexOf(this[i]) === -1){//三种情况:非NaN情况,说明辅助数组中没有该元素; //有NaN情况,由于NaN不等于自身,需要单独判断;有对象的情况,对象不等于自身 if(this[i] !== this[i]){ //item是NaN或者对象的情况 if(typeof this[i] === 'object'){//item是对象的情况 temp.push(this[i]); }else{//item是NaN if(!flag){//判断NaN之前有没有加入辅助数组中 temp.push(this[i]); flag = true; } } }else{ //item是非NaN temp.push(this[i]); } } } return temp; }
Array.prototype.uniq = function () {
var k = 0;
for(var i = 0; i < Array.length; i++)
{
for(var j = 1; j < Array.length; j++)
{
if(Array[k] === Array[j])
Array.remove(j);
Array.length = Array.length - 1;
}
k = k + 1;
}
return Array;
}
这么做明显符合了题目的要求,但是测试用例通过的只有0%,就是不知道哪里错了,求大佬解析