如何将数组转换为含固定myid嵌套对象的目标对象结构?
实现方法
核心逻辑分三步,原生JS即可实现,无需引入额外工具库:
- 拷贝原payload顶层所有非
myids字段,保持原有键值不变 - 把原
myids数组类型的值替换为对象,按要求插入固定的myid中间层节点 - 处理数组内的元素:取出数组首项(匹配给出的单元素目标结构),把元素内的
label字段重命名为value,其余属性原样保留,放入myid节点下
代码示例
// 原始payload const originalPayload = { "key": "value", "key2": "value2", "myids": [ { "key": "value", "num": 123, "label": "equal" } ] } // 提取myids数组首项,拆分出label字段和其余属性 const [firstMyidItem] = originalPayload.myids const { label, ...itemRestProps } = firstMyidItem const convertedPayload = { // 保留原对象除myids外的所有顶层属性 ...Object.fromEntries( Object.entries(originalPayload).filter(([key]) => key !== 'myids') ), // 构造固定嵌套层级 myids: { myid: { ...itemRestProps, value: label // 原label字段映射为value } } }
转换后输出结果完全匹配目标结构:
{ "key": "value", "key2": "value2", "myids": { "myid": { "key": "value", "num": 123, "value": "equal" } } }
如果原
myids数组包含多个元素,可以根据业务需求调整逻辑:比如遍历数组将所有元素按索引/业务id作为键放在myid层级下,当前逻辑完全匹配给出的单元素转换场景。
内容的提问来源于stack exchange,提问作者user16821057
相关产品推荐
相关产品推荐

