Estoy tratando de eliminar un solo objeto del siguiente objeto de matrices. He probado con slice pero a veces no funciona. Es por eso que quiero probar diferentes métodos.
{ id: "6252de4b27082fd83b94e3f4", options: [ { title: "extra Tomato", price: 2 }, { title: "ketchup", price: 1 }, { title: "medium", price: 3 }, ], price: 5.1, quantity: 1, title: "Carroll Montgomery", } supongamos que quiero eliminar un objeto medium mi salida esperada sería:
{ id: "6252de4b27082fd83b94e3f4", options: [ { title: "extra Tomato", price: 2 }, { title: "ketchup", price: 1 }, ], price: 5.1, quantity: 1, title: "Carroll Montgomery", }Puede intentar usar el método Array.filter . Simplemente proporcione el título que desea eliminar y obtendrá la matriz eliminada. Al hacerlo, no mutamos la matriz original, sino que creamos una nueva con el valor eliminado.
const obj = { id: '6252de4b27082fd83b94e3f4', options: [ { title: 'extra Tomato', price: 2 }, { title: 'ketchup', price: 1 }, { title: 'medium', price: 3 }, ], price: 5.1, quantity: 1, title: 'Carroll Montgomery', } obj.options = obj.options.filter((item) => item.title !== 'medium') console.log(obj)filter el elemento que no desea.
const obj = { id: '6252de4b27082fd83b94e3f4', options: [ {title: 'extra Tomato', price: 2}, {title: 'ketchup', price: 1}, {title: 'medium', price: 3} ], price: 5.1, quantity: 1, title: 'Carroll Montgomery' }; function removeItem(obj, item) { // Destructure the options from the object const {options, ...rest } = obj; // Return a new object with a filtered // array of options return { ...rest, options: options.filter(el => { return el.title !== item; }) }; } console.log(removeItem(obj, 'medium'));Aquí solo debe escribir la función de división personalizada;
var data = {id: "6252de4b27082fd83b94e3f4", options: [ {title: 'extra Tomato', price: 2}, {title: 'ketchup', price: 1}, {title: 'medium', price: 3}], price: 5.1, quantity: 1, title: "Carroll Montgomery"}; data["options"] = data.options.filter(function(value, index, arr){ return value.title != "medium"; }); console.log(data);