我有一個物件,manageEmpForm其中包含許多manageEmployee陣列。我需要比較該物件的 2 個不同實體并確保每個實體都manageEmployee相等。在沒有特定索引編號的情況下,我無法解決如何構建回圈以實作以下功能:
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])
uj5u.com熱心網友回復:
你可以使用Array.some():
const formHasChanged = currentManageEmpForm.controls.manageEmployees.values.some((v, i) =>
v != initialManageEmpForm.controls.manageEmployees.values[i]
)
或者,您可以使用Array.every():
const formHasChanged = !currentManageEmpForm.controls.manageEmployees.values.every((v, i) =>
v === initialManageEmpForm.controls.manageEmployees.values[i]
)
請注意,兩者都.some()接受.every()帶有引數的回呼函式:(element, index, array).
作業示例
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);
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/445927.html
標籤:javascript 打字稿
