Conseguir índice de un objeto en un Array de objetos proporcionando un atributo del objeto

publicado por: Anonymous

¿Cómo puedo eliminar un elemento de un Array de objetos?

var arreglo = [
    {
        "cantidad" : "2",
        "valor"    : 468,
        "producto" : "Banana",
        "idprod"   : 1
    },
    {
        "cantidad" : "3",
        "valor"    : 678,
        "producto" : "cebolla",
        "idprod"   : 2
    }
];

No conozco el índice del objeto que quiero eliminar, solo conozco la propiedad idprod de dicho objeto. ¿Cómo hago para averiguar el índice del objeto guiándome por esta propiedad?

var indice = arreglo.indexOf(??); // obtener el indice
arreglo.splice(indice, 1); // 1 es la cantidad de elemento a eliminar

Creo que este sería el procedimiento pero no sé cómo obtener la posición.

solución

Esto lo puedes lograr con el método Filter de JavaScript, no necesitas obligatoriamente saber la posición exacta del objeto a eliminar, solo necesitas comparar el idprod de cada objeto y cuando sea igual al id que deseas eliminar entonces sobreescribimos el arraycon los objetos restantes ignorando el actual:

_x000D_

_x000D_

var arreglo = [{"cantidad":"2","valor":468,"producto":"Banana","idprod":1},{"cantidad":"3","valor":678,"producto":"cebolla","idprod":2}];_x000D_
_x000D_
var eliminar = 2;_x000D_
_x000D_
arreglo = arreglo.filter(function(dato){_x000D_
    if(dato.idprod == eliminar){_x000D_
        return false;_x000D_
    }else{_x000D_
        return true;_x000D_
    }_x000D_
});_x000D_
_x000D_
console.log(arreglo);

_x000D_

_x000D_

_x000D_

En el ejemplo estoy eliminando el idprod: 2

Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *