'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);
|
|
};
|