diff options
Diffstat (limited to 'node_modules/arr-diff/index.js')
-rw-r--r-- | node_modules/arr-diff/index.js | 75 |
1 files changed, 32 insertions, 43 deletions
diff --git a/node_modules/arr-diff/index.js b/node_modules/arr-diff/index.js index bc7200d8e..90f280772 100644 --- a/node_modules/arr-diff/index.js +++ b/node_modules/arr-diff/index.js @@ -1,58 +1,47 @@ /*! * arr-diff <https://github.com/jonschlinkert/arr-diff> * - * Copyright (c) 2014 Jon Schlinkert, contributors. - * Licensed under the MIT License + * Copyright (c) 2014-2017, Jon Schlinkert. + * Released under the MIT License. */ 'use strict'; -var flatten = require('arr-flatten'); -var slice = [].slice; +module.exports = function diff(arr/*, arrays*/) { + var len = arguments.length; + var idx = 0; + while (++idx < len) { + arr = diffArray(arr, arguments[idx]); + } + return arr; +}; -/** - * Return the difference between the first array and - * additional arrays. - * - * ```js - * var diff = require('{%= name %}'); - * - * var a = ['a', 'b', 'c', 'd']; - * var b = ['b', 'c']; - * - * console.log(diff(a, b)) - * //=> ['a', 'd'] - * ``` - * - * @param {Array} `a` - * @param {Array} `b` - * @return {Array} - * @api public - */ +function diffArray(one, two) { + if (!Array.isArray(two)) { + return one.slice(); + } -function diff(arr, arrays) { - var argsLen = arguments.length; - var len = arr.length, i = -1; - var res = [], arrays; + var tlen = two.length + var olen = one.length; + var idx = -1; + var arr = []; - if (argsLen === 1) { - return arr; - } + while (++idx < olen) { + var ele = one[idx]; - if (argsLen > 2) { - arrays = flatten(slice.call(arguments, 1)); - } + var hasEle = false; + for (var i = 0; i < tlen; i++) { + var val = two[i]; + + if (ele === val) { + hasEle = true; + break; + } + } - while (++i < len) { - if (!~arrays.indexOf(arr[i])) { - res.push(arr[i]); + if (hasEle === false) { + arr.push(ele); } } - return res; + return arr; } - -/** - * Expose `diff` - */ - -module.exports = diff; |