如何在JavaScript中匹配CSV文件序列号并返回对应第二列值
解决方案
修改代码,将CSV解析为结构化数组,精准匹配序列号并返回对应名称:
<script> const checkm = document.getElementById('check'); checkm.addEventListener('click', serialChecker); async function serialChecker() { const url = 'http://localhost/validator/serials.csv'; const response = await fetch(url); const serialdata = await response.text(); const inputserialnumber = document.getElementById('serialnumber').value.trim().toString(); const validityElement = document.getElementById('validity'); // 解析CSV为二维数组:按行拆分,再按逗号拆分列,过滤空行 const rows = serialdata.split('\n').filter(row => row.trim() !== ''); const serialArray = rows.map(row => row.split(',').map(item => item.trim())); // 遍历数组查找匹配的序列号 let matchedName = null; for (const row of serialArray) { // 确保行有两列数据,且第一列完全匹配输入的序列号 if (row.length >= 2 && row[0] === inputserialnumber) { matchedName = row[1]; break; } } // 根据匹配结果更新提示 if (matchedName && inputserialnumber.length === 7) { validityElement.innerHTML = matchedName; startConfetti(); // 调用礼花效果 } else { validityElement.innerHTML = "Invalid"; stopConfetti(); // 停止礼花 } } </script>
关键修改说明
CSV解析优化:
- 用
split('\n')拆分每行,filter过滤空行避免无效数据 - 每行再用
split(',')拆分列,trim()去除单元格前后空格,处理CSV中可能的格式问题
- 用
精准匹配:
- 遍历每一行,对比第一列的序列号(
row[0] === inputserialnumber),避免includes()导致的部分匹配问题(比如输入"123"匹配到"123456")
- 遍历每一行,对比第一列的序列号(
结果处理:
- 找到匹配项时,取出第二列的名称(
row[1])替换提示文本 - 保留原有的序列号长度校验(7位),确保输入格式合规
- 找到匹配项时,取出第二列的名称(
内容的提问来源于stack exchange,提问作者Jeen Lolkema
相关产品推荐
相关产品推荐

