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);