实现数组去重的几种方法
数组去重一
Array.prototype.unique2 = function(){
this.sort(); //先排序
var res = [this[0]];
for(var i = 1; i < this.length; i++){
if(this[i] !== res[res.length - 1]){
res.push(this[i]);
}
}
return res;
}
var arr = [1, 'a', 'a', 'b', 'd', 'e', 'e', 1, 0]
console.log(arr.unique2());
数组去重二
利用数组indexof+push实现数组去重
var ary = [1,2,2,2,2,3,3,5,5,55,6,6];
function delArr(array){
var newArr=[];//新建一个新数组
//遍历参数数组array
for(var i=0;i<array.length;i++){
//判断新数组是否有这个元素值,没有的话,就把arr[i]给push到新数组newArr中
if(newArr.indexOf(array[i])===-1){
newArr.push(array[i]);
}
}
return newArr;
}
console.log(delArr(ary));
数组去重三
利用对象键值对法:新建一js对象以及新数组,遍历传入数组时,判断值是否为js对象的键,不是的话给对象新增该键并放入新数组
var arr = [1,2,2,2,2,3,3,5,5,55,6,6];
function delArr2(array){
var json={},newArr=[],val,type;
for(var i=0;i<array.length;i++){
val=array[i];
//判断val是什么数据类型
type=typeof val;
// console.log("判断类型"+[type]);
//判断值是否为js对象的键,不是的话给对象新增该键并放入新数组
if(!json[val]){
json[val]=[type];
newArr.push(val);
}
else if(json[val].indexOf(type)<0){
json[val].push(type);
newArr.push(val);
}
}
return newArr;
}
console.log(delArr2(arr));
【ES6】 数组去重(1)
var arr = [1,2,2,2,2,3,3,5,5,55,6,6];
function unique(ary) {
return [...new Set(ary)];
}
console.log(unique(arr));
【ES6】数组去重(2)
var arr = [1,2,2,2,2,3,3,5,5,55,6,6];
var newArr=Array.from(new Set(arr))
console.log(newArr);