如何在JavaScript中验证运行时对象是否符合预期结构?
JavaScript 对象格式验证脚本
需求概述
需要编写脚本验证运行时对象是否匹配指定的预期结构,需实现两个核心功能:
- 检测并报告缺失的必填字段
- 检测并报告存在的意外额外字段
预期对象格式定义:
const expectedObjectFormat = { data: 'someValue', errors: 'someValue', abort: 'someValue', retryData: 'someValue' };
验证实现代码
// 提取预期格式的字段列表 const expectedFields = Object.keys(expectedObjectFormat); /** * 验证运行时对象是否符合预期格式 * @param {Object} runtimeObject - 需要验证的运行时对象 * @returns {Object} 验证结果,包含missingFields和unexpectedFields数组 */ function validateObjectStructure(runtimeObject) { const runtimeFields = Object.keys(runtimeObject); const result = { missingFields: [], unexpectedFields: [] }; // 检查缺失字段 expectedFields.forEach(field => { if (!(field in runtimeObject)) { result.missingFields.push(field); } }); // 检查额外字段 runtimeFields.forEach(field => { if (!expectedFields.includes(field)) { result.unexpectedFields.push(field); } }); // 输出提示信息 if (result.missingFields.length) { console.log(`缺失字段:${result.missingFields.join(', ')}`); } if (result.unexpectedFields.length) { console.log(`意外字段:${result.unexpectedFields.join(', ')}`); } return result; }
使用示例
示例1:对象缺失字段
const runtimeObject1 = { data: 'someDifferentValue', errors: 'someDifferentValue', abort: 'someDifferentValue' }; validateObjectStructure(runtimeObject1); // 控制台输出:缺失字段:retryData
示例2:对象包含额外字段
const runtimeObject2 = { data: 'testData', errors: null, abort: false, retryData: { count: 3 }, extraField: 'unexpectedValue' }; validateObjectStructure(runtimeObject2); // 控制台输出:意外字段:extraField
示例3:同时存在缺失和额外字段
const runtimeObject3 = { data: 'partialData', abort: true, extraField1: 'wrong1', extraField2: 'wrong2' }; validateObjectStructure(runtimeObject3); // 控制台输出: // 缺失字段:errors, retryData // 意外字段:extraField1, extraField2
内容的提问来源于stack exchange,提问作者Swift Mercury
相关产品推荐
相关产品推荐

