foop
Version:
interfaces that describe their intentions.
40 lines (38 loc) • 3.13 kB
JavaScript
/* eslint prefer-includes/prefer-includes: "OFF" */
/**
* @desc use in array.filter(uniq) to de-dupe values using indexOf
* @since 0.1.0
* @memberOf array
*
* @param {*} value value in array iteration
* @param {number} index current index
* @param {Array} arr array being iterated, `thisArg` when using .filter
* @return {Array} de-duped/uniqued array
*
* @func
* @name uniq
* @alias unique
*
* {@link https://github.com/lodash/lodash/blob/master/uniq.js lodash-uniq}
* {@link https://github.com/mobxjs/mobx/blob/master/src/utils/utils.ts#L58 mobx-uniq}
* {@link https://github.com/jashkenas/underscore/blob/master/underscore.js#L559 underscore-uniq}
* {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter mozilla-array-filter}
* @see {@link mozilla-array-filter}
* @see {@link underscore-uniq}
* @see {@link mobx-uniq}
* @see {@link lodash-uniq}
*
* @example
*
* var list = [
* 1, 2, 3,
* 1, 2, 3,
* 1, 2, 3
* ]
*
* list.filter(uniq)
* //=> [1, 2, 3]
*
*/
module.exports = function (value, index, arr) { return arr.indexOf(value) === index; }
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5pcS5qcyIsInNvdXJjZXMiOlsidW5pcS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQgcHJlZmVyLWluY2x1ZGVzL3ByZWZlci1pbmNsdWRlczogXCJPRkZcIiAqL1xuXG4vKipcbiAqIEBkZXNjIHVzZSBpbiBhcnJheS5maWx0ZXIodW5pcSkgdG8gZGUtZHVwZSB2YWx1ZXMgdXNpbmcgaW5kZXhPZlxuICogQHNpbmNlIDAuMS4wXG4gKiBAbWVtYmVyT2YgYXJyYXlcbiAqXG4gKiBAcGFyYW0gIHsqfSB2YWx1ZSB2YWx1ZSBpbiBhcnJheSBpdGVyYXRpb25cbiAqIEBwYXJhbSAge251bWJlcn0gaW5kZXggY3VycmVudCBpbmRleFxuICogQHBhcmFtICB7QXJyYXl9IGFyciBhcnJheSBiZWluZyBpdGVyYXRlZCwgYHRoaXNBcmdgIHdoZW4gdXNpbmcgLmZpbHRlclxuICogQHJldHVybiB7QXJyYXl9IGRlLWR1cGVkL3VuaXF1ZWQgYXJyYXlcbiAqXG4gKiBAZnVuY1xuICogQG5hbWUgdW5pcVxuICogQGFsaWFzIHVuaXF1ZVxuICpcbiAqIHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vbG9kYXNoL2xvZGFzaC9ibG9iL21hc3Rlci91bmlxLmpzIGxvZGFzaC11bmlxfVxuICoge0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9tb2J4anMvbW9ieC9ibG9iL21hc3Rlci9zcmMvdXRpbHMvdXRpbHMudHMjTDU4IG1vYngtdW5pcX1cbiAqIHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vamFzaGtlbmFzL3VuZGVyc2NvcmUvYmxvYi9tYXN0ZXIvdW5kZXJzY29yZS5qcyNMNTU5IHVuZGVyc2NvcmUtdW5pcX1cbiAqIHtAbGluayBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9KYXZhU2NyaXB0L1JlZmVyZW5jZS9HbG9iYWxfT2JqZWN0cy9BcnJheS9maWx0ZXIgbW96aWxsYS1hcnJheS1maWx0ZXJ9XG4gKiBAc2VlIHtAbGluayBtb3ppbGxhLWFycmF5LWZpbHRlcn1cbiAqIEBzZWUge0BsaW5rIHVuZGVyc2NvcmUtdW5pcX1cbiAqIEBzZWUge0BsaW5rIG1vYngtdW5pcX1cbiAqIEBzZWUge0BsaW5rIGxvZGFzaC11bmlxfVxuICpcbiAqIEBleGFtcGxlXG4gKlxuICogICB2YXIgbGlzdCA9IFtcbiAqICAgICAgMSwgMiwgMyxcbiAqICAgICAgMSwgMiwgMyxcbiAqICAgICAgMSwgMiwgM1xuICogICBdXG4gKlxuICogICBsaXN0LmZpbHRlcih1bmlxKVxuICogICAvLz0+IFsxLCAyLCAzXVxuICpcbiAqL1xubW9kdWxlLmV4cG9ydHMgPSAodmFsdWUsIGluZGV4LCBhcnIpID0+IGFyci5pbmRleE9mKHZhbHVlKSA9PT0gaW5kZXhcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXFDQSxNQUFNLENBQUMsT0FBTyxHQUFHLFNBQUEsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxBQUFHLFNBQUEsR0FBRyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxLQUFLLEdBQUE7In0=