如何对序列化关联对象数组执行字段的获取与赋值操作?
处理嵌套序列化对象的字段获取、修改与数据提取
看起来你已经搞定了嵌套对象的字段修改,接下来要把目标数据提取到独立数组对吧?先给你梳理下更高效的操作方式,再解决数组提取的问题:
一、快速获取与设置深层字段
其实不用每次都遍历顶层对象,你的模型是嵌套结构,直接用点语法就能快速访问深层字段,比遍历更简洁:
// 获取Branch的Code字段值 const branchCode = serializedObject.Branch.Code; console.log(branchCode); // 输出 "xyz" // 修改Branch的Code字段 serializedObject.Branch.Code = "abc123"; // 修改Branch的ID(和你现有代码效果一致) serializedObject.Branch.ID = 456;
二、将目标数据提取到独立数组
如果你想把Branch对象(或者它的特定字段)提取到新数组里,不管用jQuery的$.each还是原生JS的遍历都能实现,这里给你两种方案:
方案1:用jQuery遍历实现
在你现有代码基础上,直接把目标对象/字段推入数组即可:
let newArray = []; $.each(serializedObject, function (key, value) { console.log(`key= ${key} .`, value); if (key === 'Branch') { value.ID = 456; // 先修改字段 // 方案A:把整个Branch对象加入数组 newArray.push(value); // 方案B:只提取特定字段(比如ID和Code),按需选择 // newArray.push({ // branchID: value.ID, // branchCode: value.Code // }); } }); console.log(newArray); // 查看提取后的数组
方案2:原生JS遍历(更轻量,无需依赖jQuery)
用Object.entries遍历顶层对象的键值对,代码更简洁:
const newArray = []; // 遍历顶层对象的所有键值对 for (const [key, value] of Object.entries(serializedObject)) { if (key === 'Branch') { value.ID = 456; // 修改字段 // 把Branch对象推入数组,或者提取特定字段 newArray.push(value); } }
扩展:提取多个目标对象到数组
如果之后需要把Address、Telephone这类子对象也一起提取到数组,可以定义目标键列表,批量处理:
const targetKeys = ['Branch', 'Address', 'Telephone']; const newArray = []; Object.entries(serializedObject).forEach(([key, value]) => { if (targetKeys.includes(key)) { // 针对特定对象的修改逻辑,比如修改Branch的ID if (key === 'Branch') { value.ID = 456; } newArray.push(value); } });
内容的提问来源于stack exchange,提问作者Neal Rogers
相关产品推荐
相关产品推荐

