You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 00:38:25