Validar ingreso de datos duplicados en Array – JavaScript

publicado por: Anonymous

Estoy comenzando en el desarrollo de JavaScript y tengo la siguiente función que almacena filas de datos cada vez que se ejecuta, quisiera agregarle un validador para que no almacene datos repetidos si ya existe en el array (como una búsqueda previa para validar antes de almacenar) caso contrario omitir almacenar en el array.

    <script type="text/javascript">

        var Lista = [];
        let count = 0;

        function Items_Migrar_OC(CO_EMPR, TI_REQI, NU_REQI, NU_SECU, CO_ITEM) {

            if (Item_Seleccionado == "1") {
                Lista[count] = { CO_EMPR, TI_REQI, NU_REQI, NU_SECU, CO_ITEM }
                count++;
            }
            console.log(Lista);
        }
    </script>

Evitar esta duplicidad:

introducir la descripción de la imagen aquí

ACTUALIZADO
SOLUCIÓN AL EJEMPLO:

    <script type="text/javascript">

        var Lista = [];
        var Fila_r = {};
        let count = 0;

        function Items_Migrar_OC(CO_EMPR, TI_REQI, NU_REQI, NU_SECU, CO_ITEM, CA_SOLI, CA_ATEN, CA_PEND, Item_Seleccionado) {
            //alert(Item_Seleccionado);

            var duplicado = false;

            if (Item_Seleccionado == "1") {
                Fila_r = { CO_EMPR, TI_REQI, NU_REQI, NU_SECU, CO_ITEM, CA_SOLI, CA_ATEN, CA_PEND }

                duplicado = validateUnique(Fila_r)
                alert(duplicado);

                if (duplicado == false){
                    Lista[count] = Fila_r
                    count++;
                }

            }

            console.log(Lista);
        }

        function validateUnique(myObject) {
            return !!Lista.find(i => i.NU_SECU === myObject.NU_SECU)
        }
    </script>

solución

Para ello puedes usar la función includes de Array, te dejo un ejemplo con comentarios

//Declaras tu lista
var Lista = [];

function Items_Migrar_OC(CO_EMPR, TI_REQI, NU_REQI, NU_SECU, CO_ITEM){
    //En esta parte no se que sea 'Item_Seleccionado', lo dejaré así ya que pienso que esa variable está declarada en otra parte de tu código
    if(Item_Seleccionado == "1"){


       //Guardo los datos en un objeto
       var datos = { "CO_EMPR": CO_EMPR, "TI_REQI": TI_REQI, "NU_REQI": NU_REQI, "NU_SECU": NU_SECU, "CO_ITEM": CO_ITEM };

        //Entonces ahora validamos si el elemento está o no
        if(!Lista.includes(datos)){
            //Si no está un, entonces lo insertamos
            Lista.push( datos );
        }
        else{
            //De lo contrario
            console.log("Ese ya está");
        }
    }
}

Espero que te sirva.

Respondido por: Anonymous

Leave a Reply

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