Angular 7 - конвертировать один объект в другой? - PullRequest
0 голосов
/ 25 сентября 2019

Я использую 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"
   }
}

Ответы [ 3 ]

1 голос
/ 25 сентября 2019

Возможно, вы захотите преобразовать его в 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, вы добавляете сообщение в список,Если поле отсутствует, введите новую запись.

1 голос
/ 25 сентября 2019

Вы можете перебирать массив fieldErrors и назначать каждое поле и сообщение объекту ServerResponse.

Попробуйте следующий код:

let ServerResponse:any = {};
fieldErrors.forEach(item => {
    ServerResponse[item.field] = item.message;
});
0 голосов
/ 25 сентября 2019
ServerResponse = errors.reduce((result, cur) => (result[cur.field] = cur.message, result), {});

Однако вы потеряете предметы с таким же свойством поля

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...