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%,就是不知道哪里错了,求大佬解析