Si tengo una matriz de objetos como este en playlists.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" ] } ]y en Node leí en el archivo así:
const data = JSON.parse(fs.readFileSync('playlists.json')); Quiero escribir una función .filter() que pueda buscar por id y mutar el resultado en una nueva matriz, eliminando así la entrada probada.
Por supuesto podemos acceder al índice así: playlists[0].id);
¿Cómo escribiría .filter() para probar una determinada id , es decir, generar una nueva matriz con el valor eliminado? (mutar) Escribí un código a continuación, pero es incorrecto y noob.
const someId = "2" const result = playlists.filter(playlist => playlist.id !== someId) La nueva matriz de result contendría:
"playlists" : [ { "id" : "1", "owner_id" : "2", "song_ids" : [ "8", "32" ] }, { "id" : "3", "owner_id" : "7", "song_ids" : [ "7", "12", "13", "16", "2" ] } ]Usó el filtro bien, sin embargo, ha seleccionado la clave de su objeto json. A continuación se muestra un ejemplo.
const jsonFile = { "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" ] } ] } const someId = 2 const result = jsonFile.playlists.filter(playlist => playlist.id !== someId) console.log(result)Después de una inspección. Necesitaba usar la referencia del objeto principal con listas de reproducción para lograr el resultado adecuado de la siguiente manera:
const someId = "2"; const result = data.playlists.filter(playlist => playlist.id !== someId) console.log(result);