javascript - 在 typescript 或 javascript 中按值过滤对象
问题描述
我有一个对象 JobAffiliation 并想通过 JobAffiliationEnum ex 过滤掉它。我希望 JobAffiliation 分别用于 JobAffiliationEnum.AdminPortal 和 JobAffiliationEnum.EmployeePortal
enum JobAffiliationEnum {
AdminPortal = 1,
EmployeePortal = 2
}
enum JobTypeEnum {
Job1 = 1,
Job2 = 2,
Job3 = 3
}
const JobAffiliation = {
[JobTypeEnum.Job1] : JobAffiliationEnum.AdminPortal,
[JobTypeEnum.Job2] : JobAffiliationEnum.EmployeePortal,
[JobTypeEnum.Job3] : JobAffiliationEnum.AdminPortal | JobAffiliationEnum.EmployeePortal,
...
}
谢谢
解决方案
首先,我们可以使用Object.keys
获取JobAffiliation
对象键的数组,然后通过等于一个JobAffiliationEnum
值来过滤它们,最后使用 reduce 构建一个具有过滤键的新对象。
const EmployeePortalKeys = Object.keys(JobAffiliation) as unknown as JobTypeEnum[]
const EmployeePortal = EmployeePortalKeys.filter((key)=> JobAffiliation[key] === JobAffiliationEnum.EmployeePortal)
.reduce((obj, key) => {
obj[key] = JobAffiliation[key];
return obj;
}, {} as JobTypeEnum[])
const AdminPortalKeys = Object.keys(JobAffiliation) as unknown as JobTypeEnum[]
const AdminPortal = AdminPortalKeys.filter((key)=> JobAffiliation[key] === JobAffiliationEnum.AdminPortal)
.reduce((obj, key) => {
obj[key] = JobAffiliation[key];
return obj;
}, {} as JobTypeEnum[])
推荐阅读
- javascript - 如何在具有单独模块的旧 php 站点中使用 Babel 或 webpack
- angular - 如何以角度将响应(数组)从一个组件传递到另一个组件?
- video - FFmpeg - 具有不同旋转的 Concat 视频
- c# - 将“纯”Python 与 .Net 集成
- swift - 如何使 NSMutableAttributedString 对链接起作用?
- java - 无法在 Spring Data Repository 中创建自定义查询方法
- sql-server - 在计划作业中运行 SSIS 包
- c++ - windows和Linux中字体渲染的区别,Qt Cpp
- ios - Xcode 10 上的 Spotify 安装问题
- android - Firebase functions.https.onCall 有效但返回 null