/ / Devolver matriz sin elemento en el índice n en lodash - javascript, arrays, lodash

Regresar array sin elemento en el índice n en lodash - javascript, arrays, lodash

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"]

jsFiddle

Alternativamente, puedes mirar _.at y _.pullAt también, que tienen un comportamiento similar, excepto tomar índices de matriz en lugar de objetos para eliminar.