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

求助:如何在JavaScript中根据对象值提取并转换数据格式

JavaScript 对象转换解决方案

实现思路

要完成从输入格式到目标格式的转换,核心是拆解权限编码规则、建立映射关系,再提取所需字段组装结果:

  1. 直接提取原对象的name字段;
  2. 从权限编码中提取页面名称,将下划线替换为中划线;
  3. 建立权限动作(如can_read、can_update)与目标权限标识(如(list)、(edit))的映射;
  4. 遍历所有权限,收集并去重映射后的标识,用|拼接成字符串。

代码实现

// 输入数据
const inputData = {
  "id": 6,
  "createdAt": "2024-07-24T11:33:05.749Z",
  "updatedAt": "2024-07-24T11:33:05.749Z",
  "deletedAt": null,
  "name": "vendor_cashier",
  "permissions": [
    {"id": 18,"createdAt": "2024-07-24T11:33:05.683Z","updatedAt": "2024-07-24T11:33:05.683Z","deletedAt": null,"code": "can_read_pos_device"},
    {"id": 19,"createdAt": "2024-07-24T11:33:05.683Z","updatedAt": "2024-07-24T11:33:05.683Z","deletedAt": null,"code": "can_update_pos_device"}
  ]
};

// 权限动作与目标标识的映射表
const permissionMap = {
  'can_read': ['(list)', '(show)'],
  'can_update': ['(edit)'],
  'can_create': ['(create)'],
  'can_delete': ['(delete)']
};

// 转换函数
function transformData(data) {
  // 提取角色名称
  const name = data.name;

  // 提取页面名称(从第一个权限编码中解析)
  const firstPermission = data.permissions[0];
  let page = '';
  if (firstPermission) {
    const [, , ...pageParts] = firstPermission.code.split('_');
    page = pageParts.join('_').replace('_', '-');
  }

  // 收集所有权限标识(自动去重)
  const permissionSet = new Set();
  data.permissions.forEach(perm => {
    const action = perm.code.split('_').slice(0, 2).join('_');
    const mappedPermissions = permissionMap[action] || [];
    mappedPermissions.forEach(p => permissionSet.add(p));
  });

  // 拼接权限字符串
  const permissions = Array.from(permissionSet).join('|');

  return { name, page, permissions };
}

// 执行转换并输出结果
const output = transformData(inputData);
console.log(JSON.stringify(output, null, 2));

输出结果

运行上述代码后,将得到符合要求的JSON:

{
  "name": "vendor_cashier",
  "page": "pos-device",
  "permissions": "(list)|(show)|(edit)"
}

内容的提问来源于stack exchange,提问作者Ahmed Elhoseny

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 16:19:59