首页 > 试题广场 >

请用js原生代码写出数组去重的函数,并考虑到执行效率。

[问答题]

请用js原生代码写出数组去重的函数,并考虑到执行效率。

function del(arr){
    var  newArr = [];
    for(var i =0, len=arr.length;i<len;i++)
        if(newArr.indexOf(arr[i])==-1)
        newArr.push(arr[i]);
     return newArr;
};
发表于 2017-08-10 10:48:28 回复(0)
我用的是ES6语法进行数组去重,一行代码搞定的同时,性能很高
Array.prototype.deleteSame = ()=>{return Array.from(new Set(arr))};  

下面测试
var arr = [1,2,3,4,1,2,3,4];        
console.log(arr.deleteSame());

输出[1,2,3,4]    
发表于 2017-08-09 23:29:34 回复(2)
/**indexOf去重 */
function fun(arr){
    var array=[];
    arr.forEach(function(value,index) {
        if(array.indexOf(value)<0){
            array.push(value);
        }
    }, this);
    return array;
}
 /**利用set去重 */
function fun(arr){
    var set=new Set(arr);
    var array=Array.from(set);
    console.log(array instanceof Array);
    return array;
}
/**哈希表去重 */
function fun(arr){
    var array=[];
    var hash={};
    arr.forEach(function(value,index) {
        if(!hash[value]){
            hash[value]=true;
            array.push(value);
        }
    }, this);
    return array;
}

发表于 2017-08-25 14:49:19 回复(1)
//通过数组的索引去重
function unique(arr){
var subArr = [];
for(vari=0; i<arr.length; i++){
if(subArr.indexOf(arr[i]) == -1){
subArr.push(arr[i]);
}
}
returnsubArr;
}

编辑于 2017-08-10 16:46:29 回复(0)
var arr = []; var s = new Set(arr); arr = […s];
发表于 2017-09-02 19:08:36 回复(0)
function dedump(arr) {
    return arr.filter((x, i)=> arr.indexOf(x) === i)
}

发表于 2019-11-15 15:16:08 回复(0)
var cArray = [1,2,3,3,5,1,2];

Array.prototype.unique = function()
{
	//alert("独一");
	
    var jsonArray = {};
    var newArray = [];
	for(var i = 0; i < this.length; i++)
    {
		//alert(i+"=="+this[i]);
        if(jsonArray[this[i]]!= 1)
        {
			jsonArray[this[i]] =1;
			newArray.push(this[i]);
        }
	
    }
    return newArray;
	
}
// 这句必须放在原型后面,切记
var carray = cArray.unique();
alert(carray);

发表于 2017-08-27 16:32:20 回复(0)
Array.prototype.delRepeat = function() {
	for(var i = 0, max = this.length; i <max; i++ ) {
		var x = this[i]
		if (this.indexOf(x) !== this.lastIndexOf(x)) {
			this.splice(i, 1)
		}
	}
	return this
}

编辑于 2017-08-21 21:46:34 回复(0)
function deleteSame (arr){
    for(var i=0; i<arr.length-1; i++){
	for(var j=i+1; j<arr.length;){
	    if(arr[i]==arr[j]){
		arr.splice(j,1);
	    }else{
		j++;
	    }
	}
    }
}



function deleteSame (arr){
	for(var i=0; i<arr.length;){
		if(arr.indexOf(arr[i])==i){
			i++;
		}else{
			arr.splice(i,1);
		}
	}
}

编辑于 2017-08-14 20:12:21 回复(0)
function delDouble(arr){
	var array=[];
	for(var key in arr){
		if(array.indexOf(arr[key])==-1){
			array.push(arr[key]);
		}
	}
	return array;
}

发表于 2017-08-10 21:08:14 回复(0)
function unique(arr){
    let hash={},result=[]
    arr.forEach(item=>{
        if(!hash[item]){
            hash[item]=1
            result.push(item)
        }
        hash[item]++
    })
    return result
}
发表于 2019-07-20 14:13:23 回复(0)
好啊
发表于 2017-12-11 17:42:47 回复(0)
function del(Arr){
var newArr = [];
for(var i = 0;i < (Arr.length-1);i++){
for(var j = i + 1;j < Arr.length;){
if(Arr[i] == Arr[j]){
newArr.push(Arr.splice(j,1)[0]);
}else{
j++;
}
}
}
return newArr;
}
编辑于 2017-12-07 21:57:14 回复(0)
这个题可以用filter函数搞定
发表于 2017-09-20 17:01:44 回复(0)
function oSort(arr) { var len=arr.length;  for(var i=0;i<len-1;i++){ if(arr[i]==arr[i+1]){
            arr.splice(i,1);  }
    }
    console.log(arr); }

发表于 2017-09-12 10:41:29 回复(0)

function removeRepeat(arr){
    let array = [];
    for(let i =0;i<arr.length;i++{
        if(array.indexof(arr[i])!=-1){
            array.push(arr[i])
    }
}
}
发表于 2017-08-29 23:05:49 回复(0)
function getSingle(arr){  var arr = arr.slice(0).sort(),
        temp = arr[0]; for(var i = 1;i<arr.length;i++){
        arr[i] === temp ? arr[i] = undefined : temp = arr[i];
   }
   arr = arr.filter(function (ele) {
      return ele !== undefined;
   });  return arr;
}

编辑于 2017-08-11 09:10:39 回复(0)
function quchong(arr){ var newarr = []; for(i of arr){ if(newarr.indexOf(i)==-1){ newarr.push(i)
        }
    } return newarr;
}
发表于 2017-08-10 20:40:28 回复(0)
functiondelete(arr){
    arr.sort(function(a,b){returna-b;});
    varj = 0, i = 0;
    for(i = 0; i<arr.length; i++){
         if(arr[j]!=arr[i]){
            arr[j++] = arr[i];
        }
    }
    arr.length = j + 1;
    returnarr;
}
发表于 2017-08-10 10:13:33 回复(0)
function del(arr){
			var obj={};
			var newArr=[];
			for(var i=0;i<arr.length;i++){
				if(!obj[arr[i]]){
					obj[arr[i]]=1;
					newArr.push(arr[i]);
				}
			}
			return newArr;
		}

发表于 2017-08-10 08:35:56 回复(0)