首页 > 试题广场 >

js 数组去重

Array.prototype.filterOverlap = function(){
    var temp = [];
    if(!this.length){
         return [];
    }
    for(var i=0,len = this.length;i<len;i++){
     if(temp.indexOf(this[i])<0){
          temp.push(this[i]);
      }    
    }
    return temp;
}

发表于 2015-08-17 21:54:58 回复(2)
function unique(array){
if(array==null) return [];
var result=[];
for(var i=0,length=array.length;i<length;i++){
var value=array[i];
if(result.indexOf(value)<0) result.push(value);
}
return result;
}

编辑于 2017-05-16 17:20:03 回复(0)
Array.from(new Set( [1,12,2,2,3,3]);
发表于 2019-03-28 11:51:17 回复(0)
function uniqArray(arr) {
return Array.from(new Set(arr));
}

发表于 2017-07-01 11:42:03 回复(1)
编辑于 2020-09-10 00:17:08 回复(0)
function findInArr(arr,iNum){
    for(var i=0;i<arr.length;i++){
        if(arr[i]==iNum){
            return true;
        }
    }
    return false;
}
var arr = [12,5,3,6,6,7,8,12,5];
var arr2 = [];
for(var i=0;i<arr.length;i++){
    if(!findInArr(arr2,arr[i])){
        arr2.push(arr[i]);
    }
}
document.write(arr+'<br/>');
document.write(arr2);
==========================
var arr=[12,34,56,34,12,56,78,12,34,56];
var json = {};
for(var i=0;i<arr.length;i++){
    json[arr[i]]=1;
}
var arr2 = [];
for(var i in json){
    arr2.push(i);
}
document.write(arr+'<br />');
document.write(arr2);
===================================
var arr = [12,5,3,8,12,5,3,8,9];
arr.sort();
for(var i=0;i<arr.length;i++){
    if(arr[i]==arr[i+1]){
        arr.splice(i,1);
        i--;
    }
}
document.write(arr);
编辑于 2015-10-19 22:43:57 回复(0)
function uniqArray(arr) {
//利用es6 新的数据类型,Set() 集合来做,集合不的每个元素是不允许重复的
        return [... new Set(arr)];
}
发表于 2017-04-25 16:14:58 回复(0)
[1,2,3,4,4,4,5,5,4].filter((value, index, arr) =>arr.indexOf(value) ===index)
发表于 2017-10-23 16:44:22 回复(0)
Array.from(new Set(this.data))
发表于 2020-08-05 22:09:53 回复(0)
function unique(arr){ return arr.sort().join(",,").replace(/(,|^)([^,]+)(,,\2)+(,|$)/g,"$1$2$4").replace(/,,+/g,",").replace(/,$/,"").split(",").map(function(data){return +data;}); }


发表于 2017-10-17 15:55:22 回复(0)
function unique (arr) {
var i = arr.length
var newArray = []
var hash = {}
while (i--) {
if(hash[arr[i]]) continue
newArray.push(arr[i])
hash[arr[i]] = 1
}
return newArray
}
console.log(unique([2,1,2,3,4,3,5,5]))

编辑于 2017-03-14 21:43:54 回复(0)
function fn(resArr){
    for (var l=0;l<resArr.length;l++){
    if(resArr.indexOf(resArr[l])!==l){
      resArr.splice(l,1);//利用splice删除第二次出现的值,
l--;//原始数组倍删除某个元素后,后续元素索引进一,若想继续遍历,则索引-1
    }
  }
  return resArr;
}
发表于 2017-02-03 20:13:13 回复(0)
var arr=[1,2,3,5,1,2,3]; for(var i=0,len=arr.length;i<len;i++){ for(var j=0;j<len;j++){ if(arr[i]==arr[j]){ arr.splice(j,1); j--; len=arr.length } } }
发表于 2016-09-26 11:03:13 回复(0)
Array.prototype.distinct = function () {
            var ret = [];
            for (var i = 0; i < this.length; i++) {
                for (var j = i + 1; j < this.length; j++) {
                    if (this[i] === this[j]) {
                        ret.push(this.splice(j, 1)[0]);
                    }
                }
            }
           return this; //返回去重后的数组
//            return ret;//返回重复的数组
        }
       var arrayA = ['ab', 'bb', 'bc', 'd', 'ab', 'e', 'd', 'c', 'a'];
     alert(arrayA.distinct());

编辑于 2016-09-12 11:38:47 回复(0)
function uniqAry(ary){
var obj={};
for(var i=0;i<ary.length;i++){
var cur=ary[i]; 
if(obj[cur]===cur){
ary[i]=ary[ary.length-1];
ary.length--;
i--;
continue;
}
obj[cur]=cur;
}
obj=null;
return ary;
}
发表于 2016-01-03 14:31:23 回复(0)
Array.prototype.uniq = function () {
  var k=false;
    for(var i=0;i<this.length;i++)
    {
        if(this[i]!==this[i]){k=true;}
 
       for(var j=i+1;j<this.length;)
       {
        if(this[i]===this[j]||(k && this[j]!==this[j]))
        {
            this.splice(j,1);
        }
        else
        {
            j++;
        }
       }
    }
    returnthis;
}
可以去除NaN null undefined
发表于 2015-09-27 10:13:49 回复(0)
function uniqArray(arr) {
    var arr2 = [];
    arr2.push(arr[0]);
    for(var i=1;i<arr.length;i++){
     for(var j=0;j<arr2.length;j++){
      if(arr[i] == arr2[j]){
       break;
      }
     }
     if(j == arr2.length){
      arr2.push(arr[i]);
     }
    }
    return arr2;
}
发表于 2015-09-04 22:37:31 回复(1)
发表于 2015-07-27 16:16:38 回复(0)