unique.js
479 Bytes
var identity = function(item) { return item }
var itemId = function(item) { return item.id }
/*
* Filters a list to unique items
*/
module.exports = function(list, getId) {
if (!list || !list.length) { return [] }
if (!getId) {
getId = (list[0].id ? itemId : identity)
}
var seen = {}
var result = []
for (var i=0; i<list.length; i++) {
var item = list[i]
var id = getId(item)
if (seen[id]) { continue }
seen[id] = true
result.push(item)
}
return result
}