如何编写函数将CSV格式的国家首都字符串转换为以国家为键的JS对象
CSV格式国家首都数据转JS对象实现
处理这类固定结构的CSV数据时,需要注意几个容易踩的坑:
- 输入字符串首尾带空换行,拆分行后会产生无效空值,需要提前过滤
- 首行是表头项,不属于实际业务数据,需要跳过
- 每个字段值被双引号包裹,要精准剥离首尾引号,不能破坏字段内容
- 部分名称包含特殊变音字符(如
Brasília),处理时不能损坏原字符
实现代码
function parseCountryCsv(csvInput) { // 按换行拆分文本,过滤掉无有效内容的空行 const allRows = csvInput.split('\n').filter(row => row.trim().length > 0); // 跳过第一行表头,从第二行开始读取实际数据 const validRows = allRows.slice(1); const countryCapitalMap = {}; for (const row of validRows) { // 拆分逗号分隔的两个字段,移除每个字段首尾的双引号 const [country, capital] = row.split(',').map(item => item.trim().replace(/^"|"$/g, '') ); countryCapitalMap[country] = capital; } return countryCapitalMap; }
逻辑说明
- 正则
/^"|"$/g仅匹配字段开头和结尾的双引号,不会误删字段内部可能存在的引号内容 - 给定的数据源中,国家、首都名称本身不包含逗号,不需要额外处理CSV的转义逗号场景,简单拆分即可满足需求
- 自动兼容输入文本首尾换行带来的空行问题,不需要调用方提前做文本清理
- 没有引入第三方CSV解析库,这类规整的简单数据场景下手写处理逻辑性能更好,也不会带来额外的依赖负担
内容的提问来源于stack exchange,提问作者Hannan Khan
相关产品推荐
相关产品推荐

