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.
58 lines
958 B
58 lines
958 B
/*! |
|
* arr-diff <https://github.com/jonschlinkert/arr-diff> |
|
* |
|
* Copyright (c) 2014 Jon Schlinkert, contributors. |
|
* Licensed under the MIT License |
|
*/ |
|
|
|
'use strict'; |
|
|
|
var flatten = require('arr-flatten'); |
|
var slice = [].slice; |
|
|
|
/** |
|
* 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 diff(arr, arrays) { |
|
var argsLen = arguments.length; |
|
var len = arr.length, i = -1; |
|
var res = [], arrays; |
|
|
|
if (argsLen === 1) { |
|
return arr; |
|
} |
|
|
|
if (argsLen > 2) { |
|
arrays = flatten(slice.call(arguments, 1)); |
|
} |
|
|
|
while (++i < len) { |
|
if (!~arrays.indexOf(arr[i])) { |
|
res.push(arr[i]); |
|
} |
|
} |
|
return res; |
|
} |
|
|
|
/** |
|
* Expose `diff` |
|
*/ |
|
|
|
module.exports = diff;
|
|
|