You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

34 lines
831 B

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