index.js
 1  /*!
 2   * array-unique <https://github.com/jonschlinkert/array-unique>
 3   *
 4   * Copyright (c) 2014-2015, Jon Schlinkert.
 5   * Licensed under the MIT License.
 6   */
 7  
 8  'use strict';
 9  
10  module.exports = function unique(arr) {
11    if (!Array.isArray(arr)) {
12      throw new TypeError('array-unique expects an array.');
13    }
14  
15    var len = arr.length;
16    var i = -1;
17  
18    while (i++ < len) {
19      var j = i + 1;
20  
21      for (; j < arr.length; ++j) {
22        if (arr[i] === arr[j]) {
23          arr.splice(j--, 1);
24        }
25      }
26    }
27    return arr;
28  };
29  
30  module.exports.immutable = function uniqueImmutable(arr) {
31    if (!Array.isArray(arr)) {
32      throw new TypeError('array-unique expects an array.');
33    }
34  
35    var arrLen = arr.length;
36    var newArr = new Array(arrLen);
37  
38    for (var i = 0; i < arrLen; i++) {
39      newArr[i] = arr[i];
40    }
41  
42    return module.exports(newArr);
43  };