最基本的寫法 使用indexOf() 看起來性能還不錯的去除方法 假如只要排序的話 我們可以用一行代碼實現 ...
最基本的寫法 使用indexOf()
var arr = [1,1,5,77,32,54,2,4,5,2,2,4,52,2,2,2,2,2]
//比較常規的語法使用indexOf來判斷是否已經存在
getFileArray(arr)
function getFileArray(arr){
var array = [];
arr.forEach(e => {
if(array.indexOf(e) !== -1){
return;
}else {
array.push(e)
}
});
return array;
}
看起來性能還不錯的去除方法
// 通過遍歷每次被值給到數組角標 適用於數組裡面數量不太的數組
var arr = [1,1,5,77,32,54,2,4,5,2,2,4,52,2,2,2,2,2]
getFilterArray(arr)
function getFilterArray (array) {
const res = [];
const json = {};
for (let i = 0; i < array.length; i++){
const _self = array[i]; //獲取迭代的數值
if(!json[_self]){ //假如json在_self這個下標沒有數值,就說明這個數據沒有
res.push(_self); //沒有的話就push
json[_self] = 1; //同時給這和匹配不到的下標一個值,保證下次進不來
} // 這樣寫的話 不需要迴圈遍歷 對性能要求更小
}
return res;
}
另類的寫法
var array = [1, 1, 5, 77, 32, 54, 2, 4, 5, 2, 2, 4, 52, 2, 2, 2, 2, 2]
arrtoObject(arr)
function arrtoObject(arrs) {
//var obj={};
var obj = new Object();
for (var i = 0; i < arrs.length; i++) {
obj[arrs[i]] = true;
}
objectToarr(obj)
}
function objectToarr(obj){
console.log(obj);
var arr = [];
for (const i in obj) {
arr.push(i)
}
console.log(arr);
return arr
}
ES5 filter過濾函數
var array = [1,1,5,77,32,54,2,4,5,2,2,4,52,2,2,2,2,2]
function unique(array) {
var res = array.filter(function (item, index, array) {
return array.indexOf(item) === index; //因為array.indexOf返回數組的下標 如果這裡的下標和index不一樣說明已經存在了,就直接退出了
})
return res;
}
console.log(unique(array));
ES6 Set 這簡直就是為過濾而生的 過濾 排序
var arr = [1, 1, 5, 77, 32, 54, 2, 4, 5, 2, 2, 4, 52, 2, 2, 2, 2, 2]
function FilterArray(arr) {
set = new Set(arr)
let arrays = Array.from(set)
arrays.sort((a, b) => {
return a - b
})
return arrays
}
FilterArray(arr)
假如只要排序的話
我們可以用一行代碼實現
var arr = [1, 1, 5, 77, 32, 54, 2, 4, 5, 2, 2, 4, 52, 2, 2, 2, 2, 2]
var FilterArray = (arr) => [...new Set(arr)] //
FilterArray(arr)