Tengo un formulario que consta de una matriz de campos de entrada.
¿Hay alguna forma de verificar las entradas en cada fila y verificar si tienen al menos un valor único en cualquier campo para que no haya filas idénticas?
Por ejemplo, la segunda fila solo puede tener 3 de 4 campos con valores exactos similares a los de la primera fila, como máximo.
<form> <div> <table> <tr v-for="(item, i) of items" :key="i"> <td> <input type="date" :id="'date-' + i"> </td> <td> <input type="text" :id="'project_id-' + i"> </td> <td> <input type="text" :id="'hours-' + i"> </td> <td> <input type="text" :id="'description-' + i"> </td> </tr> <tr> <td> <button type="button" @click="itemCount++">Add Row</button> </td> </tr> </table> </div> <div> <button type="button" v-on:click="submit()"> </div> </form> Me encontré con una técnica que usa una validación distinct pero no estoy seguro de su practicidad además de la sintaxis y el flujo correctos.
En la función de submit() , convierta la matriz de items en un Set para eliminar los valores redundantes. A continuación, vuelva a convertir a Array nuevamente para poder comparar las dos matrices por su length . Si las longitudes son diferentes, significa que existen valores redundantes.
submit() { const arr = this.items var obj = arr.map(JSON.stringify) var set = new Set(obj) var unique = Array.from(set).map(JSON.parse) console.log(obj, set, unique); if(obj.length != unique.length) { alert("Error: Redundant inputs!") } else { // submit the form }; }PASOS :
Primero, convierta cada objeto de la matriz arr en una cadena codificada en JSON utilizando el método JSON.stringify .
En segundo lugar, asigne la cadena codificada JSON a una nueva matriz obj utilizando el método map() .
En tercer lugar, cree un nuevo set pasando la matriz obj al constructor del nuevo conjunto para eliminar todos los elementos duplicados.
Este set solo contendrá los valores que son únicos de la matriz.
Luego, convierta el conjunto a otra matriz unique usando el método from() pasando el set como un parámetro.
Esta nueva matriz no tendrá objetos redundantes de la matriz anterior (si los hay).
Por último, compare ambas matrices por su length para averiguar si son iguales o no. Las longitudes desiguales indican la presencia de valores de entrada redundantes.