Esto es probablemente bastante fácil, pero me da problemas. Dada esta estructura JSON:
"playlists" : [ { "id" : "1", "owner_id" : "2", "song_ids" : [ "8", "32" ] }, { "id" : "2", "owner_id" : "3", "song_ids" : [ "6", "8", "11" ] }, { "id" : "3", "owner_id" : "7", "song_ids" : [ "7", "12", "13", "16", "2" ] } ]¿Cómo eliminaría un objeto de la matriz por clave/valor? En este caso por DNI? lista de reproducción. empalme (1,1)? lista de reproducción.eliminar (id)? No estoy seguro de cómo hacer esto con elegancia. Digamos que deseo eliminar el elemento con ID = 3, cómo obtener este resultado:
"playlists" : [ { "id" : "1", "owner_id" : "2", "song_ids" : [ "8", "32" ] }, { "id" : "2", "owner_id" : "3", "song_ids" : [ "6", "8", "11" ] } ]Usando Array.filter , puede filtrar elementos que no coincidan con una determinada condición. Por ejemplo:
const result = playlists.filter(playlist => playlist.id !== '2');Aquí hay una demostración de trabajo:
/* Example Data */ const playlists = [ { "id" : "1", "owner_id" : "2", "song_ids" : [ "8", "32"] }, { "id" : "2", "owner_id" : "3", "song_ids" : ["6", "8","11" ] } ]; /* Takes a list of playlists, and an ID to remove */ const removePlaylistById = (plists, id) => plists.filter(playlist => playlist.id !== id); /* Removes playlist ID 2 from list, prints result */ const result = removePlaylistById(playlists, '2'); console.log(result); Otra opción sería usar Array.findIndex para obtener el índice de un elemento con la ID dada, luego usar Array.splice para eliminar ese elemento. Esto modificará la matriz, sin necesidad de una copia.
Por ejemplo:
const indexToRemove = playlists.findIndex((pl) => pl.id === '2'); playlists.splice(indexToRemove, 1);