ui
This commit is contained in:
+34
@@ -0,0 +1,34 @@
|
||||
'use strict';
|
||||
|
||||
var _require = require('../helpers/is'),
|
||||
isFunction = _require.isFunction;
|
||||
|
||||
module.exports = function unique(key) {
|
||||
var collection = void 0;
|
||||
|
||||
if (key === undefined) {
|
||||
collection = this.items.filter(function (element, index, self) {
|
||||
return self.indexOf(element) === index;
|
||||
});
|
||||
} else {
|
||||
collection = [];
|
||||
|
||||
var usedKeys = [];
|
||||
|
||||
for (var iterator = 0, length = this.items.length; iterator < length; iterator += 1) {
|
||||
var uniqueKey = void 0;
|
||||
if (isFunction(key)) {
|
||||
uniqueKey = key(this.items[iterator]);
|
||||
} else {
|
||||
uniqueKey = this.items[iterator][key];
|
||||
}
|
||||
|
||||
if (usedKeys.indexOf(uniqueKey) === -1) {
|
||||
collection.push(this.items[iterator]);
|
||||
usedKeys.push(uniqueKey);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return new this.constructor(collection);
|
||||
};
|
||||
Reference in New Issue
Block a user