UNPKG

segment-matcher

Version:

Segment Matcher - TypeScript version with dual ESM/CJS format support

33 lines (32 loc) 857 B
/** * 提取字段值 * * @param segment - 消息段 * @param mapping - 字段映射配置 * @returns 提取的值,如果无法提取则返回 null */ export function extractFieldValue(segment, mapping) { // 如果是函数,直接调用 if (typeof mapping === 'function') { try { return mapping(segment); } catch { return null; } } // 如果是字符串数组,按顺序尝试 if (Array.isArray(mapping)) { for (const field of mapping) { if (field in segment.data && segment.data[field] != null) { return segment.data[field]; } } return null; } // 如果是字符串,直接访问字段 if (typeof mapping === 'string') { return segment.data[mapping] ?? null; } return null; }