方法一:
雙層迴圈,外層迴圈元素,內層迴圈時比較值,如果有相同的值則跳過,不相同則push進陣列
array.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.
array.prototype.distinct = function ()
} }return arr;
};var a = [1,2,3,4,5,6,5,3,2,4,56,4,1,2,1,1,];
var b = a.distinct();
console.log(b.tostring()); //1,2,3,4,5,6,56
缺點:占用記憶體高,速度慢
優點:簡單易懂
方法三:利用物件的屬性不能相同的特點進行去重
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];
var b = a.distinct();
console.log(b.tostring()); //1,2,3,4,5,6,56
方法四:陣列遞迴去重
運用遞迴的思想先排序,然後從最後開始比較,遇到相同,則刪除
array.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,56,45,56];
var b = a.distinct();
console.log(b.tostring()); //1,2,3,4,5,6,45,56
方法五:利用indexof以及foreach
array.prototype.distinct = function ()
}) return result;
};var a = [1,1,2,2,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資料結構,它類似於陣列,其成員的值都是唯一的。
new set(array)將利用array.from將set結構轉換成陣列
function dedupe(array)
dedupe([1,1,2,3]) //[1,2,3]
拓展運算子(...)內部使用for...of迴圈
let arr = [1,2,3,3];
let resultarr = [...new set(arr)];
console.log(resultarr); //[1,2,3]
推薦[...
new
set(arr)]這種寫法,簡單快捷。
心理快樂六法
精神勝利法 這是一種有益身心健康的心埋防衛機制。在你的事業 愛情 婚姻不盡人意時,在你因經濟上得不到合理的對待而傷感時,在你無端遭到人身攻擊時或不公正的評價而氣惱時,在你因生理缺陷遭到嘲笑而寡歡時,你不防用阿q的精神調適一下你失衡的心理,營造乙個祥和 豁達 坦然的心理氛圍。難得糊塗法 這是心理環境免...
JS陣列去重,物件去重
例項1根據indexof去重,indexof的好處就是返回的是首次出現的位置,這樣後面即使出現的值一樣,也只能返回第一次出現的索引,當然這個只適用於簡單的陣列 物件陣列去重 const objarr const obj const newobjarr for let i 0 i objarr.len...
js 陣列去重
function unique arr if isrepeated return result 建立乙個新的陣列,迴圈原有的陣列,每取乙個數就迴圈判斷新建的陣列中是否有和這個相等的值,沒有則插入。方法簡單,但是有雙重迴圈,陣列大了之後效率低。所以能一次迴圈解決最好。var str new array...