AABB
AlignmentBehavior
ArriveBehavior
AStar
BFS
BoundingSphere
BVH
BVHNode
Cell
CellSpacePartitioning
CohesionBehavior
CompositeGoal
ConvexHull
Corridor
CostTable
DFS
Dijkstra
Edge
EntityManager
EvadeBehavior
EventDispatcher
Behavior
FollowPathBehavior
FuzzyAND
FuzzyCompositeTerm
FuzzyFAIRLY
FuzzyModule
FuzzyOR
FuzzyRule
FuzzySet
FuzzyTerm
FuzzyVariable
FuzzyVERY
GameEntity
Goal
GoalEvaluator
Graph
GraphUtils
HalfEdge
HeuristicPolicyDijkstra
HeuristicPolicyEuclid
HeuristicPolicyEuclidSquared
HeuristicPolicyManhattan
InterposeBehavior
LeftSCurveFuzzySet
LeftShoulderFuzzySet
LineSegment
Logger
MathUtils
Matrix3
Matrix4
MemoryRecord
MemorySystem
MeshGeometry
MessageDispatcher
MovingEntity
NavEdge
NavMesh
NavMeshLoader
NavNode
Node
NormalDistFuzzySet
OBB
ObstacleAvoidanceBehavior
OffsetPursuitBehavior
OnPathBehavior
Path
Plane
Polygon
Polyhedron
PriorityQueue
PursuitBehavior
Quaternion
Ray
RectangleTriggerRegion
Regular
RightSCurveFuzzySet
RightShoulderFuzzySet
SAT
SeekBehavior
SeparationBehavior
SingletonFuzzySet
Smoother
SphericalTriggerRegion
State
StateMachine
SteeringBehavior
SteeringManager
Task
TaskQueue
Telegram
Think
Time
TriangularFuzzySet
Trigger
TriggerRegion
Vector3
Vehicle
Version
WanderBehavior

resolveReferences

功能说明

MemoryRecord库中的resolveReferences方法可以解析当前表格中引用其他表格的数据。该方法遍历当前表格中的每一条记录,并获取该记录所引用的其他表格记录的数据。然后将这些数据填充到当前记录中,以便于用户在查询当前表格数据时,可以一并获取到原始表格数据。

方法使用

方法定义:

resolveReferences(): void

使用说明:

  1. 用户需要保证当前表格中引用的其他表格数据已经成功加载,否则该方法将无法正常执行。

  2. 调用resolveReferences方法时,需要确保已经从其他表格获取到了数据,否则可能会出现数据不完整的情况。

  3. 调用resolveReferences方法时,会触发当前表格中每个记录的on_resolve_references事件,用户可以监听这个事件,进行自定义的处理逻辑。

代码示例

// 创建一个表格实例
const table = new MemoryTable([
  {id: '1', name: 'Alice', group: '1'},
  {id: '2', name: 'Bob', group: '1'},
  {id: '3', name: 'Charlie', group: '2'},
  {id: '4', name: 'David', group: '2'},
]);

// 创建另一个表格实例
const groups = new MemoryTable([
  {id: '1', label: 'Group A'},
  {id: '2', label: 'Group B'},
]);

// 设置table中的group字段引用groups表格的id字段
table.setReference('group', groups, 'id');

// 加载groups表格数据
groups.load();

// 解析table中的引用
table.resolveReferences();

// 获取解析后的table数据
const data = table.getData();
console.log(data);

// 在on_resolve_references事件中自定义解析逻辑
table.on_resolve_references = (record, references) => {
  record.group_name = groups.getDataById(references.group).label;
};

注意事项

  1. 在resolveReferences方法调用后,如果需要手动修改当前表格中的记录内容,需要使用内部方法_set,而不要直接修改记录对象,否则可能会导致解析结果不正确。

  2. 在resolveReferences方法中,如果遇到多级引用的情况,需要确保所有引用的数据都已经加载完成,并且resolveReferences方法也已经调用完毕,否则可能会出现数据不完整的情况。