如何对比主表头数组与表头对象,找出不区分大小写的缺失表头?
解决不区分大小写的必填表头校验问题
你的代码问题出在:仅将masterHeads中的表头转为小写,直接去匹配原headers对象的键——但headers的键本身是带大小写的字符串,不会自动转换为小写,因此无法实现不区分大小写的匹配。
正确实现步骤
- 先提取
headers的所有键,统一转为小写后存入Set(Set的查找效率比对象属性查找更高) - 遍历
masterHeads,将每个表头转为小写后检查是否存在于Set中,不存在的即为缺失表头
代码示例
const masterHeads = ['head1', 'head2', 'Head3']; const headers = { Heasd1: 'xxx', Head2: 'yyy', Head3: 'zzz', other: 'blah' }; // 生成小写表头集合 const lowerCaseHeaderSet = new Set(Object.keys(headers).map(key => key.toLowerCase())); // 过滤缺失的表头 const missingHeads = masterHeads.filter(head => !lowerCaseHeaderSet.has(head.toLowerCase())); console.log(missingHeads); // 输出: ['head1']
内容的提问来源于stack exchange,提问作者physicsboy
相关产品推荐
相关产品推荐

