_.without already exists. Alternatively, you can use _.pull as well, which mutates the given argument array.
var guests = ['Peter', 'Lua', 'Elly', 'Scruath of the 5th sector'];
var bannedGuest = 'Scruath of the 5th sector';
var bannedGuests = ['Peter', 'Scruath of the 5th sector'];
console.debug(_.without(guests, bannedGuest )); // ["Peter", "Lua", "Elly"]
Banning a collection of guests is not directly supported, but we can work around that easily:
// banning an array of guests is not yet supported, but we can use JS apply:
var guestList = _.without.apply(null, [guests].concat(bannedGuests));
console.debug(guestList); // ["Lua", "Elly"]
// or if you are feeling fancy or just want to learn a new titbit, we can use spread:
guestList = _.spread(_.without)([guests].concat(bannedGuests));
console.debug(guestList); // ["Lua", "Elly"]
jsFiddle
Alternatively, you can look at _.at and _.pullAt as well, which have similar behavior, except take array indexes instead of objects to remove.
without, but in one line of code.without,difference, and it haspullAtwhich does what you want but returns the removed values, so it can't be chained.