diff options
Diffstat (limited to 'node_modules/uniq/uniq.js')
| -rw-r--r-- | node_modules/uniq/uniq.js | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/node_modules/uniq/uniq.js b/node_modules/uniq/uniq.js new file mode 100644 index 00000000..e86c44b5 --- /dev/null +++ b/node_modules/uniq/uniq.js @@ -0,0 +1,57 @@ +"use strict" + +function unique_pred(list, compare) { + var ptr = 1 + , len = list.length + , a=list[0], b=list[0] + for(var i=1; i<len; ++i) { + b = a + a = list[i] + if(compare(a, b)) { + if(i === ptr) { + ptr++ + continue + } + list[ptr++] = a + } + } + list.length = ptr + return list +} + +function unique_eq(list) { + var ptr = 1 + , len = list.length + , a=list[0], b = list[0] + for(var i=1; i<len; ++i, b=a) { + b = a + a = list[i] + if(a !== b) { + if(i === ptr) { + ptr++ + continue + } + list[ptr++] = a + } + } + list.length = ptr + return list +} + +function unique(list, compare, sorted) { + if(list.length === 0) { + return list + } + if(compare) { + if(!sorted) { + list.sort(compare) + } + return unique_pred(list, compare) + } + if(!sorted) { + list.sort() + } + return unique_eq(list) +} + +module.exports = unique |
