You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为嵌套JavaScript对象添加引用来源属性from

为对象添加引用来源from属性的解决方案

问题分析

需要为obj下的每个顶层对象(如o1、o2、o5)添加from属性,存储所有通过字段type.id引用该对象的字段ID。核心是先收集所有引用关系,再批量为目标对象赋值。

原生JavaScript实现代码

const data = {
  obj: {
    o1: {
      id: "o1",
      name: "o1",
      fields: {
        f1: { id: "o1:f1", type: { id: "o5" } },
        f2: { id: "o1:f2", type: { id: "o2" } },
      },
    },
    o2: {
      id: "o2",
      name: "o2",
      fields: { f1: { id: "o2:f1", type: { id: "o5" } } },
    },
    o5: { id: "o5", name: "o5" },
  },
};

// 收集引用关系:键为被引用对象ID,值为对应字段ID数组
const referenceMap = {};

Object.values(data.obj).forEach(parent => {
  if (parent.fields) {
    Object.values(parent.fields).forEach(field => {
      const refId = field.type.id;
      if (!referenceMap[refId]) {
        referenceMap[refId] = [];
      }
      referenceMap[refId].push(field.id);
    });
  }
});

// 为目标对象添加from属性
Object.entries(referenceMap).forEach(([id, fieldIds]) => {
  if (data.obj[id]) {
    data.obj[id].from = fieldIds;
  }
});

console.log(data);

代码说明

  1. 收集引用关系:遍历所有带有fields的顶层对象,提取每个字段的type.id(被引用对象ID),将当前字段ID存入对应ID的数组中,形成引用映射表。
  2. 赋值from属性:遍历引用映射表,找到obj中对应ID的对象,直接为其添加from属性,值为收集到的字段ID数组。

这个方案无需依赖第三方库,逻辑直观,能高效处理给定的对象结构。

内容的提问来源于stack exchange,提问作者Ste

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 22:45:17