1.利用Set 方法去重
let nums = [1,4,3,2,5,9,8,3,2,3,4,8] function removeDuplicate(nums) { let set = new Set(nums); return Array.from(set)
// return Array.from(new Set(nums)); } console.log(removeDuplicate(nums));
2.利用Array indexOf, lastIndexOf ,includes,some
arr.indexOf(searchElement[, fromIndex]) 首個被找到的元素在數組中的索引位置; 若沒有找到則返回 -1
arr.lastIndexOf(searchElement[, fromIndex]) 數組中該元素最后一次出現的索引,如未找到返回-1。
arr.includes(valueToFind[, fromIndex])
返回一個布爾值 Boolean ,如果在數組中找到了(如果傳入了 fromIndex ,表示在 fromIndex 指定的索引范圍中找到了)則返回 true 。
arr.some(callback(element[, index[, array]])[, thisArg])
數組中有至少一個元素通過回調函數的測試就會返回true;所有元素都沒有通過回調函數的測試返回值才會為false。
function removeDuplicate(nums) { let n = nums.length; let newArr = [] for(let i=0;i<n;i++){ //if(newArr.indexOf(nums[i]) === -1){ // if(newArr.lastIndexOf(nums[i]) === -1){ // if(newArr.includes(nums[i]) === false){ if(newArr.some((num)=>num===nums[i]) === false){ newArr.push(nums[i]) } } return newArr; } console.log(removeDuplicate(nums));
3.利用 array.filter
var newArray = arr.filter(callback(element[, index[, array]])[, thisArg])
一個新的、由通過測試的元素組成的數組,如果沒有任何數組元素通過測試,則返回空數組。
function removeDuplicate(nums) { return nums.filter((num,index,arr)=>{ return arr.indexOf(num) === index; }) } console.log(removeDuplicate(nums));
4.利用 Map
myMap.set(key, value);
myMap.has(key); 如果指定元素存在於Map中,則返回true。其他情況返回false
function removeDuplicate(nums) { let n = nums.length; let map = new Map(); for(let num of nums){ if(!map.has(num)){ map.set(num,0); } } return Array.from(map.keys()); } console.log(removeDuplicate(nums));
5.利用 reduce
arr.reduce(callback(accumulator, currentValue[, index[, array]])[, initialValue])
1)如果沒有提供initialValue,reduce 會從索引1的地方開始執行 callback 方法,跳過第一個索引。如果提供initialValue,從索引0開始。
2)如果數組為空且沒有提供initialValue,會拋出TypeError 。
3)如果數組僅有一個元素(無論位置如何)並且沒有提供initialValue, 或者有提供initialValue但是數組為空,那么此唯一值將被返回並且callback不會被執行。
function removeDuplicate(nums) { let res = nums.reduce((acc,cur)=>{ if(acc.indexOf(cur) === -1){ acc.push(cur); } return acc; },[]); return res; } console.log(removeDuplicate(nums));
暫時總結了這么多,歡迎大家一起討論。