Ahora mismo tengo esta función:
function without(array, index) {
array.splice(index, 1);
return array;
}
Pensé que esto sería algo para lo que tendría una utilidad, pero parece que no.
Tener esta función me permite hacer una sola línea que puedo encadenar:
var guestList = without(guests, bannedGuest).concat(moreNames);
No hay manera de lograr esto sin introducir un predicado función, utilizando lodash?
Respuestas
1 para la respuesta № 1_.without
ya existe. Alternativamente, puedes usar _.pull
también, lo que muta la matriz de argumentos dada.
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"]
No se admite directamente la prohibición de una colección de invitados, pero podemos solucionarlo fácilmente:
// 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"]
Alternativamente, puedes mirar _.at
y _.pullAt
también, que tienen un comportamiento similar, excepto tomar índices de matriz en lugar de objetos para eliminar.