方法一:
雙層迴圈,外層迴圈元素,內層迴圈時比較值
如果有相同的值則跳過,不相同則push進陣列?1
2345
6789
1011
1213
1415
1617
18array.prototype.distinct =
function
()
}
result.push(arr[i]);
}
return
result;
}
var
arra = [1,2,3,4,4,1,1,2,1,1,1];
arra.distinct();
//返回[3,4,2,1]
方法二:利用splice直接在原陣列進行操作
雙層迴圈,外層迴圈元素,內層迴圈時比較值
值相同時,則刪去這個值
注意點:刪除元素之後,需要將陣列的長度也減1.?1
2345
6789
1011
1213
1415
1617
1819
array.prototype.distinct =
function
()
}
}
return
arr;
};
var
a = [1,2,3,4,5,6,5,3,2,4,56,4,1,2,1,1,1,1,1,1,];
var
b = a.distinct();
console.log(b.tostring());
//1,2,3,4,5,6,56
優點:簡單易懂
缺點:占用記憶體高,速度慢
方法三:利用物件的屬性不能相同的特點進行去重?1
2345
6789
1011
1213
1415
1617
array.prototype.distinct =
function
(),
result = ,
len = arr.length;
for
(i = 0; i< arr.length; i++)
}
return
result;
};
var
a = [1,2,3,4,5,6,5,3,2,4,56,4,1,2,1,1,1,1,1,1,];
var
b = a.distinct();
console.log(b.tostring());
//1,2,3,4,5,6,56
方法四:陣列遞迴去重
運用遞迴的思想
先排序,然後從最後開始比較,遇到相同,則刪除?1
2345
6789
1011
1213
1415
1617
1819
20array.prototype.distinct =
function
())
function
loop(index)
loop(index - 1);
//遞迴loop函式進行去重
}
}
loop(len-1);
return
arr;
};
var
a = [1,2,3,4,5,6,5,3,2,4,56,4,1,2,1,1,1,1,1,1,56,45,56];
var
b = a.distinct();
console.log(b.tostring());
//1,2,3,4,5,6,45,56
方法五:利用indexof以及foreach?1
2345
6789
1011
1213
1415
array.prototype.distinct =
function
()
})
return
result;
};
var
a = [1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,3,3,3,3,3,3,3,2,3,3,2,2,1,23,1,23,2,3,2,3,2,3];
var
b = a.distinct();
console.log(b.tostring());
//1,23,2,3
方法六:利用es6的set
set資料結構,它類似於陣列,其成員的值都是唯一的。
利用array.from將set結構轉換成陣列?1
234function
dedupe(array)
dedupe([1,1,2,3])
//[1,2,3]
拓展運算子(...)內部使用for...of迴圈?1
23let arr = [1,2,3,3];
let resultarr = [...
new
set(arr)];
console.log(resultarr);
//[1,2,3]
下面給大家補充介紹合併陣列並去重的方法
一、concat()方法
思路:concat() 方法將傳入的陣列或非陣列值與原陣列合併,組成乙個新的陣列並返回。該方法會產生乙個新的陣列。?1
2345
function
concatarr(arr1, arr2)
思路:該方法優點是不會產生乙個新的陣列。?1
2345
6789
10var
a = [1, 2, 3];
var
b = [4, 5, 6];
//a=[1,2,3,4,5,6]
function
concatarray(arr1,arr2)
JS陣列去重的6種演算法實現
1.遍歷陣列法 最簡單的去重方法,實現思路 新建一新陣列,遍歷傳入陣列,值不在新陣列就加入該新陣列中 注意點 判斷值是否在陣列的方法 indexof 是ecmascript5 方法,ie8以下不支援,需多寫一些相容低版本瀏覽器 原始碼如下 var arr 1,3,5,7,9,1,9,5,9,3,5,...
JS陣列去重的6種演算法實現
1.遍歷陣列法 最簡單的去重方法,實現思路 新建一新陣列,遍歷傳入陣列,值不在新陣列就加入該新陣列中 注意點 判斷值是否在陣列的方法 indexof 是ecmascript5 方法,ie8以下不支援,需多寫一些相容低版本瀏覽器 原始碼如下 var arr 1,3,5,7,9,1,9,5,9,3,5,...
JS陣列去重的6種演算法實現
1.遍歷陣列法 最簡單的去重方法,實現思路 新建一新陣列,遍歷傳入陣列,值不在新陣列就加入該新陣列中 注意點 判斷值是否在陣列的方法 indexof 是ecmascript5 方法,ie8以下不支援,需多寫一些相容低版本瀏覽器 原始碼如下 var arr 1,3,5,7,9,1,9,5,9,3,5,...