如何移除数组元素中的空字符串?JavaScript场景求助
解决CSV字符串转数组时的末尾空元素问题
你的代码里出现末尾空元素,核心原因是每行字符串结尾都带有逗号,调用split(',')时,逗号后的空内容会被解析成空字符串;另外每行开头的缩进空格也会导致元素带多余空格。以下是几种实用的修复方案:
方案一:分割后过滤空元素
let string_Data = `01226,Grover Cleveland,Anna,Uganda,Crucial Ltd,Tested Mutual B.V,Calvin Coolidge, 77110,John F. Kennedy,hora,Bosnia Herzegovina,Formal,Papal Corporation,Franklin Roosevelt, 29552,Lyndon B. Johnson,Margaret,Palau,Summaries Holdings Inc,Customize,Rutherford B. Hayes,`; let making_Array = csv => { return csv.split('\n').map(line => { // 去除每行首尾的空格、换行符 const trimmedLine = line.trim(); // 跳过空行 if (!trimmedLine) return []; // 分割后过滤空字符串和纯空格元素 return trimmedLine.split(',').filter(item => item.trim() !== ''); }).filter(line => line.length > 0); // 过滤空数组 } console.log(making_Array(string_Data));
方案二:正则分割+预处理
用正则表达式处理逗号分割,同时自动处理元素前后的空格:
let string_Data = `01226,Grover Cleveland,Anna,Uganda,Crucial Ltd,Tested Mutual B.V,Calvin Coolidge, 77110,John F. Kennedy,hora,Bosnia Herzegovina,Formal,Papal Corporation,Franklin Roosevelt, 29552,Lyndon B. Johnson,Margaret,Palau,Summaries Holdings Inc,Customize,Rutherford B. Hayes,`; let making_Array = csv => { return csv.split('\n').map(line => { const trimmedLine = line.trim(); if (!trimmedLine) return []; // 按逗号分割,同时忽略逗号前后的空格,再过滤空元素 return trimmedLine.split(/\s*,\s*/).filter(item => item); }).filter(line => line.length > 0); } console.log(making_Array(string_Data));
方案三:先移除行尾逗号
先通过正则把每行末尾的逗号去掉,再进行分割,从根源避免空元素:
let string_Data = `01226,Grover Cleveland,Anna,Uganda,Crucial Ltd,Tested Mutual B.V,Calvin Coolidge, 77110,John F. Kennedy,hora,Bosnia Herzegovina,Formal,Papal Corporation,Franklin Roosevelt, 29552,Lyndon B. Johnson,Margaret,Palau,Summaries Holdings Inc,Customize,Rutherford B. Hayes,`; let making_Array = csv => { // 移除所有行尾的逗号(包括逗号后的空格) const processedCsv = csv.replace(/,\s*$/gm, ''); return processedCsv.split('\n').map(line => { const trimmedLine = line.trim(); return trimmedLine ? trimmedLine.split(',').map(item => item.trim()) : []; }).filter(line => line.length > 0); } console.log(making_Array(string_Data));
关键步骤说明
line.trim():清理每行首尾的缩进空格、换行符,避免元素带多余空格或空行被处理。filter(item => item.trim() !== ''):过滤掉分割产生的空字符串和纯空格元素。- 正则
/,\s*$/gm:匹配每行末尾的逗号(后面可跟任意空格),替换为空后,分割就不会产生末尾空元素。
内容的提问来源于stack exchange,提问作者victoriousVINAY
相关产品推荐
相关产品推荐

