Tengo un objeto, manageEmpForm que contiene muchas matrices manageEmployee . Necesito comparar 2 instancias diferentes de este objeto y asegurarme de que todos los manageEmployee de administración sean iguales. Tengo problemas para entender cómo construir un ciclo para lograr la siguiente funcionalidad, sin la numeración de índice específica:
const initialFormValues1 = this.manageEmpForm.controls.manageEmployees.value[0]; const initialFormValues2 = this.manageEmpForm.controls.manageEmployees.value[1]; ... const currentFormValues1 = this.manageEmpForm.controls.manageEmployees.value[0]; const currentFormValues2 = this.manageEmpForm.controls.manageEmployees.value[1]; ... formHasChanged = Object.keys(this.initialFormValues1).some(key => currentFormValues1[key] != this.initialFormValues1[key]) || Object.keys(this.initialFormValues2).some(key => currentFormValues2[key] != this.initialFormValues2[key])Podrías usar Array.some() :
const formHasChanged = currentManageEmpForm.controls.manageEmployees.values.some((v, i) => v != initialManageEmpForm.controls.manageEmployees.values[i] ) Alternativamente, podría usar Array.every() :
const formHasChanged = !currentManageEmpForm.controls.manageEmployees.values.every((v, i) => v === initialManageEmpForm.controls.manageEmployees.values[i] ) Tenga en cuenta que tanto .some() como .every() aceptan una función de devolución de llamada con argumentos: (element, index, array) .
Ejemplo de trabajo
const initialManageEmpForm = { controls: { manageEmployees: { values: [1, 2, 3] } } } const currentManageEmpForm = { controls: { manageEmployees: { values: [1, 2, 4] } } } const formHasChanged1 = currentManageEmpForm.controls.manageEmployees.values.some((v, i) => v != initialManageEmpForm.controls.manageEmployees.values[i] ) const formHasChanged2 = !currentManageEmpForm.controls.manageEmployees.values.every((v, i) => v === initialManageEmpForm.controls.manageEmployees.values[i] ) console.log(formHasChanged1); console.log(formHasChanged2);