如何拆分对象键并将员工信息对象转换为对象数组?
扁平化员工对象转结构化数组的实现
原始数据:
const employeeDetails = { "admin-name": "deepak", "admin-age": "29", "tester-name": "raju", "tester-age": "26", };
期望输出:
const employeeDetails = [ { _id: "admin", name: "deepak", age: 29, }, { _id: "tester", name: "raju", age: 26, }, ];
直接上实现代码:
const employeeDetails = { "admin-name": "deepak", "admin-age": "29", "tester-name": "raju", "tester-age": "26", }; const result = Object.entries(employeeDetails).reduce((acc, [key, value]) => { const [role, prop] = key.split('-'); let employee = acc.find(item => item._id === role); if (!employee) { employee = { _id: role }; acc.push(employee); } employee[prop] = prop === 'age' ? Number(value) : value; return acc; }, []);
实现逻辑拆解:
- 用
Object.entries()把原始对象转成键值对数组,方便逐个处理 - 把每个键按
-拆成角色和属性两部分,比如admin-name拆成admin和name - 检查结果数组里有没有当前角色的对象,没有就新建一个塞进去
- 属性赋值时,把年龄字符串转成数字类型,其他属性保留原格式
- 最终得到符合要求的结构化数组
内容的提问来源于stack exchange,提问作者Kumar
相关产品推荐
相关产品推荐

