不知怎麼就想到這裡了,動手總結算,算是給自己看的吧。
盡量做到簡單易懂。注釋清楚。包括些許基礎的知識點。(就是文字表達不行,懶得想,直接注釋了。)
直接進入主題。沒有demo,基本控制台都可以測試。
!!!基礎篇。 建立在array的值都是基本型別的情況。todo
第一種: 基本可以擯棄。當時還不知道陣列的一些方法,就純用for去實現的。(按照思路寫的,又稍許更改)
function
unique1
(arr)
var result = ;
result.push(arr.shift(1)) //直接把arr第乙個值push到result裡。array.prototype.shift/push 都會更改使用此方法的陣列
var len = arr.length;
//原陣列作為外層迴圈遍歷,內層迴圈reuslt因為值會改變,就不提取len出來。
for (var i = 0; i < len; i++)
if (j === result.length - 1) }}
return result;}
第二種: 利用array.prototype.indexof() 來處理。(事實上,自己在用第一種方法解決問題後,沒過幾天就看到了這個inexof。覺得自己當時真實蠢到爆。)
indexof()方法返回在陣列中可以找到給定元素的第乙個索引,如果不存在,則返回-1。
function
unique2
(arr = [1, 2, 1, 2, 3, 'a', 'b', 'a', 'c'])
}return result;
}
**很簡單,也不細說了。
這裡相對第一種,**量減少很多。(第一種其實就是這種思路沒有內建方法的實現)。
第三種: 邏輯—先把arr排序。然後遍歷arr每個值,判斷其和result最後1個值是否相等,來決定是否將此值推入陣列。
function unique3(arr = [1, 2, 1, 2, 3, 'a', 'b', 'a', 'c'])
}return result;
}
第四種:利用es6的set(set有點類似陣列,但是它本身是不能重複的。!。本身就幫我們去重了)。然後我們將其轉為陣列就好了。
集合(set)物件允許你儲存任意型別的唯一值(不能重複),無論它是原始值或者是物件引用。
function
unique4
(arr = [1, 2, 1, 2, 3, 'a', 'b', 'a', 'c'])
return
}
todo 第四種。嗯,自己也僅處於會「用」的階段而已。代完善。
(2017/5/14 1:40。寫到這裡回頭看,發現挖坑好多。爭取早日填坑。)
陣列去重的幾種方法
實現思路 新建一新陣列,遍歷傳入陣列,值不在新陣列就加入該新陣列中 注意點 判斷值是否在陣列的方法 indexof 是ecmascript5 方法,ie8以下不支援,需多寫一些相容低版本瀏覽器 最簡單陣列去重法 function unique1 array return n 實現思路 新建一js物件...
陣列去重的幾種方法
記錄一些陣列去重的方法,如果有錯誤的地方,還望指正 1.利用es6中的set 去重特性 const arr 1,2,3,6,8,2,9,5,6,4,9 function uniq arr const resultarr1 uniq arr console.log resultarr1 2.利用inc...
陣列去重的幾種方法
function unique arr let arr 1,2,3,1,2,2,a b c c a 4 4,false,false,undefined,undefined,null,null nan,nan,console.log unique arr 1,2,3,a b c 4,false,und...