Estoy usando el siguiente código para actualizar cualquier propiedad dada dentro de un objeto JS:
var main = { items: [ { "name": "T-Shirt", "description": "Green XL", "quantity": "1", }, { "name": "Shoes", "description": "Running, Size 10.5", "quantity": "2", } ] }; let project = main.items.find((p) => { return p.name === 'Shoes'; }); project.quantity = '3'; console.log(main); //shoes quantity is now 3 Y funciona, sin embargo, quiero que también pueda eliminar toda la variable del project (por ejemplo, todo el bloque Shoes ). Lo intenté:
let project = main.items.find((p) => { return p.name === 'Shoes'; }); delete project; console.log(main); //shoes still existPero no funciona. ¿Cuál sería la mejor manera de eliminar la propiedad?
Editar: mi principal problema aquí fue encontrar el index del elemento que se eliminará. La respuesta elegida a continuación proporciona la solución.
Puedes usar Array#filter .
main.items = main.items.filter(p => p.name !== 'Shoes');No puede usar el operador de delete de esta manera. Para eliminar el elemento encontrado de la matriz en el lugar, querrá usar Array#splice()
const foundIndex = main.items.findIndex((p) => { return p.name === 'Shoes'; }); if (foundIndex !== -1) main.items.splice(foundIndex, 1)