Some Lodash Argument Handling

by Trever Shick

HTML

<script src="//cdnjs.cloudflare.com/ajax/libs/lodash.js/3.5.0/lodash.js"></script>
<script src="https://rawgit.com/trevershick/6d9364085a1e566b2e18/raw/console.js"></script>

JavaScript

var waitingOnItems = [];

noLongerWaitingOn = function(name) {
    var args = _normalizeArguments(arguments);
    waitingOnItems = _.difference(waitingOnItems, args);
}
isWaitingOn = function() {
    var args = _normalizeArguments(arguments);
    return (_.intersection(args, waitingOnItems).length > 0);
}
_normalizeArguments = function() {
    return _.flattenDeep(_.map(arguments, _.identity));
}
waitingOn = function() {
    var args = _normalizeArguments(arguments);
    waitingOnItems = _.uniq(waitingOnItems.concat(args));
}


waitingOn('a');
waitingOn('b');
waitingOn('a');

isWaitingOn('a','b');
console.log("0", waitingOnItems);
console.log("1", waitingOnAny('a'));
console.log("2", "" + waitingOnAny('c'));
console.log("3", waitingOnAny('a','c'));
console.log("4", waitingOnAny(['a','c']));
waitingOn('dog');
waitingOn('cat');
noLongerWaitingOn(['dog','a']);
console.log("5", waitingOnItems);