javascript - 如何在 typescript 中分隔具有特定数组前缀的对象数组

标签 javascript typescript-typings

我计划通过使用索引规范分离那些类型的数组来准备这个数组

默认数据格式

[{
      "Emp_code": "EM-00001",
      "Emp_title": "11",
      "Emp_firstName": "22",
      "Emp_lastName": "33",
      "Emp_dateOfBirth": "20-10-1985",
      "Con_title": "title",
      "Con_email": "email",
      "Con_addres": "address",
      "Con_phone": "phone"
    }]

所需格式

[{
  "emp": {
      "code": "EM-00001",
      "title": "11",
      "firstName": "22",
      "lastName": "33",
      "dateOfBirth": "20-10-1985",
  },
  "con": {
      "Con_title": "title",
      "Con_email": "email",
      "Con_addres": "address",
      "Con_phone": "phone"
  }
}]

最佳答案

您可以将属性名称简化为 [{ emp: {} }, { con: {} }] 的起始累加器,并且每次迭代您都可以将属性添加到累加器中的相应项。

const data = [{
      "Emp_code": "EM-00001",
      "Emp_title": "11",
      "Emp_firstName": "22",
      "Emp_lastName": "33",
      "Emp_dateOfBirth": "20-10-1985",
      "Con_title": "title",
      "Con_email": "email",
      "Con_addres": "address",
      "Con_phone": "phone"
    }];
    
const format = obj =>
  Object.getOwnPropertyNames(obj[0]).reduce(
    (acc, prop) => {
      if (prop.startsWith('Emp_')) {
        acc[0].emp[prop.replace('Emp_', '')] = obj[0][prop];
      } else {
        acc[1].con[prop] = obj[0][prop];
      }
      return acc;
    },
    [{ emp: {} }, { con: {} }]
  );
 
 console.log(format(data));

关于javascript - 如何在 typescript 中分隔具有特定数组前缀的对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52620476/

相关文章:

typescript - 无法扩展 sinon 的类型

javascript - 包含将发布到 npm 的 js 包的 Typescript 类型的正确方法是什么?

javascript - 带有可扩展部分的 Accordion

javascript - 为什么要更改 HTML 标签的 class 属性?

javascript - 如何在渲染完成之前在 UIWebView 中阻止 Javascript 警报|确认|提示?

typescript - 如何在模块声明中重新导出命名空间定义

javascript - 查询嵌套的 JSON

javascript - 如何在 WebGL 上的着色器内保存变量,以及如何从 JavaScript 程序读取其值?

Typescript 获取 typeof 接口(interface)或类型的子字段

javascript - TypeScript 编译器包含来自 TypeScript 定义的具有不同名称的模块