aboutsummaryrefslogtreecommitdiff
path: root/node_modules/arr-diff/index.js
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/arr-diff/index.js')
-rw-r--r--node_modules/arr-diff/index.js75
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;