給定一個數組數組,那麼識別重複項的有效方法是什麼?在數組中找到重複數組
var array = [
[
11.31866455078125,
44.53836644772605
],
[ // <-- Here's the duplicate
11.31866455078125,
44.53836644772605
],
[
11.371536254882812,
44.53836644772605
],
[
11.371536254882812,
44.50140292110874
]
]
我一直對這個有lodash
爲接受的依賴,我也得到了如何使用_.uniqWith
和_.isEqual
剛剛回歸的「獨一無二」的文章:
_.uniqWith(array,_.isEqual)
隨着會給「獨特的」版本列表:
[
[ 11.31866455078125, 44.53836644772605 ],
[ 11.371536254882812, 44.53836644772605 ],
[ 11.371536254882812, 44.50140292110874 ]
]
但是,而不是僅僅報告獨特的元素,我需要的只是被複制的元素,非常牛逼他是第一次出現的索引。
這實際上是由lodash
圖書館通過一些我缺少的方法組合來覆蓋的嗎?或者我只是需要通過編寫循環來比較元素。
對此可能只是過於樂觀,對這個問題如此清晰的目光是值得歡迎的。
儘量不如果有庫方法那件衣服,所以我基本上是卡與重寫功能:
只返回重複或至少比較差的「唯一列表」。
基本上確定數組中的「索引」。雖然我想這可以通過
_.isEqual
一旦找到重複項目就可以減少過濾器。
也試圖避免創建對象的哈希/地圖和計數這裏以及按鍵的出現,或者至少不是作爲一個單獨的對象,並作爲東西,可以「在線」功能來完成。
進一步看,我發現我的錯字,並仔細看了一下代碼並理解你在這裏做什麼。不能說我對使用'.slice()'繼續增長列表感到非常滿意,但它確實感覺比索引循環更清晰。仔細研究一下。 –
@NeilLunn'_.findIndex(collection.slice(0,index),equal)!== -1;'可以簡化爲手動的'findIndex'來迭代一次。但目前的方法是緊湊的。 –
我在想什麼。無論如何你都有我的選票。我仍然只是清理頭腦,考慮選擇。就像我說的那樣,這是比其他人更清晰的編碼方法。 –