如何在JavaScript中从错误对象筛选path与message属性?
问题
假设我有如下错误对象:
{ "errors": { "name": { "name": "ValidatorError", "message": "Minimum length 6 characters.", "properties": {}, "kind": "minlength", "path": "name", "value": "Ju" }, "passcodeConfirm": { "name": "ValidatorError", "message": "Passwords do not match!", "properties": {}, "kind": "user defined", "path": "passcodeConfirm", "value": "judydoes@gmail.com" } } }
我希望从这个嵌套对象里只筛选出path和message属性,整理成如下结构的结果:
{ status: "Error", code: 404, errors: { type: "validation error", fields: [ { name: "name", message: "Minimum length 6 characters." }, { name: "passcodeConfirm", message: "Passwords do not match!" } ] } }
请问该如何实现这一需求?
解决方案
用JavaScript可以快速实现这个需求,核心思路是遍历原始错误对象的所有值,提取需要的属性后组装成目标结构:
// 原始错误数据(假设已提取出errors对象) const rawErrorFields = { "name": { "name": "ValidatorError", "message": "Minimum length 6 characters.", "properties": {}, "kind": "minlength", "path": "name", "value": "Ju" }, "passcodeConfirm": { "name": "ValidatorError", "message": "Passwords do not match!", "properties": {}, "kind": "user defined", "path": "passcodeConfirm", "value": "judydoes@gmail.com" } }; // 生成目标结构 const formattedResult = { status: "Error", code: 404, errors: { type: "validation error", fields: Object.values(rawErrorFields).map(error => ({ name: error.path, message: error.message })) } }; console.log(formattedResult);
代码说明:
Object.values(rawErrorFields):把原始的错误对象转换为包含所有字段错误详情的数组map():遍历数组中的每个错误对象,只保留path(重命名为name)和message两个属性,生成新的对象数组- 最后将处理好的数组插入到目标结构的
fields字段中,完成格式转换
内容的提问来源于stack exchange,提问作者Drystan
相关产品推荐
相关产品推荐

