如何解析JSON生成以EmpNo为键、attendanceStatus为值的JS对象?
实现方法详解
嘿,这事儿其实挺容易搞定的,咱们直接用JavaScript的数组遍历方法就能实现你想要的结构。核心思路就是遍历原始数据里的table1数组,把每个元素的EmpNo作为新对象的键,再把字符串类型的attendanceStatus转换成布尔值作为对应的值。
方法一:用forEach遍历(直观易懂)
// 你的原始JSON数据 const rawAttendanceData = { "table1": [ { "EmpNo": "3103899", "attendanceStatus": "true" } ] }; // 初始化目标对象 const attendances = {}; // 遍历数组里的每个员工记录 rawAttendanceData.table1.forEach(empRecord => { // 把EmpNo作为键,将字符串状态转为布尔值赋值 attendances[empRecord.EmpNo] = empRecord.attendanceStatus === 'true'; }); console.log(attendances); // 输出结果: { '3103899': true }
方法二:用reduce方法(更简洁)
如果你喜欢更紧凑的写法,reduce方法可以一步到位:
const rawAttendanceData = { "table1": [ { "EmpNo": "3103899", "attendanceStatus": "true" } ] }; const attendances = rawAttendanceData.table1.reduce((result, empRecord) => { result[empRecord.EmpNo] = empRecord.attendanceStatus === 'true'; return result; }, {}); console.log(attendances); // 同样得到: { '3103899': true }
关键注意点
- 原始数据里的
attendanceStatus是字符串类型的"true"/"false",所以必须通过=== 'true'来转换成布尔值,不然最终对象里的值会是字符串而不是你示例里的布尔类型。 - 如果后续
table1里有多个员工记录,这两种方法都能自动处理,把所有员工的编号和状态都映射到目标对象里。
内容的提问来源于stack exchange,提问作者Asker
相关产品推荐
相关产品推荐

