在 Angular 7 中将一个对象转换为另一个对象

Convert one object to another in Angular 7

我正在使用 Angular 7,我正在将所有详细信息输入 const fieldErrors = error.error.fieldErrors;

0:
code: "Size"
field: "studentName"
message: "Length of characters should be between 1 to 255"
resource: "studentDto"
__proto__: Object
1:
code: "NotBlank"
field: "studentName"
message: "Program Name is mandatory"
resource: "studentDto"
__proto__: Object
2:
code: "NotBlank"
field: "studentDesc"
message: "Student Description is mandatory"
resource: "studentDto"
__proto__: Object
length: 3

我想把它转换成

ServerResponse = {
   "studentName" {
        "Program Name is mandatory"
    },
    studentDesc {
       "Student Description is mandatory"
   }
}

您可以遍历 fieldErrors 数组并将每个字段和消息分配给 ServerResponse 对象。

试试下面的代码:

let ServerResponse:any = {};
fieldErrors.forEach(item => {
    ServerResponse[item.field] = item.message;
});
ServerResponse = errors.reduce((result, cur) => (result[cur.field] = cur.message, result), {});

但是您将丢失具有相同字段的项目属性

您可能希望将其转换为 json,每个字段都是一个数组,如下所示:

ServerResponse = {
    studentName: [
        "Length of characters should be between 1 to 255",
        "Program Name is mandatory"
    ],
    studentDesc: [
        "Student Description is mandatory"
    ]
}

这样,同一个字段的多个错误信息可以放入同一个键中。

您可以遍历 fieldErrors 数组并手动分配值。

let ServerResponse = {};
fieldErrors.forEach(fieldError => {
    if (ServerResponse[fieldError.field]) {
        ServerResponse[fieldError.field].push(fieldError.message);
    } else {
        ServerResponse[fieldError.field] = fieldError.message;
    }
});

如果该字段已存在于 ServerResponse 中,则您正在将邮件添加到列表中。如果该字段不存在,请创建一个新条目。