仅扁平化JSON中acf二级字段 保留id等其余一级字段原有结构
解决方案
实现思路
你之前的递归函数会把所有嵌套对象全部展开,所以才会把title、status这类需要保留的嵌套结构也破坏了。我们不需要全量递归,只针对性处理acf这一个字段即可:
- 遍历数据数组中的每个对象元素
- 保留所有非acf的一级字段原有结构(id、title完全不用修改)
- 把acf对象内的所有属性直接合并到当前对象的一级层级
- 移除原来的acf字段即可
完整代码
// 先修正你原始数据的笔误(重复写了var data、多余逗号) var data = [{ "id": 451, "title": { "rendered": "title1" }, "acf": { "floor": "6", "business": [ "business" ], "status": { "value": "null", "label": "Määramata" }, "suund": "", "area": { "value": "full", "label": "Terve korrus" }, "suurus": "", "tookohad": "" } }]; // 处理函数 const processedData = data.map(item => { // 解构出acf字段,其他字段保留为rest const { acf, ...rest } = item; // 把rest和acf的属性展开合并成新对象返回 return { ...rest, ...acf }; }); console.log(processedData);
效果说明
运行后得到的结构完全符合你的要求:id、title的嵌套结构原封不动,acf下的floor、business、status等所有字段全部提到一级层级,不会额外展开其他嵌套结构。如果你需要修改字段名比如把suurus改成size,在合并的时候单独赋值替换即可。
内容的提问来源于stack exchange,提问作者Kessune
相关产品推荐
相关产品推荐

