JavaScript中如何优雅拆分CSV数组内的分号分隔字符串
问题
读取CSV文件后得到如下结构的数组:
var data = [["abc;def"],["ghi;jkl"], ...]
每个子数组里的字符串用分号分隔,需要将其拆分后得到如下结构:
var data = [["abc", "def"], ["ghi", "jkl"]]
尝试用forEach处理:
var dataFormatted = data.forEach((row :Array<String>)=> { return row[0].split(";"); });
但dataFormatted结果为undefined,想知道有没有类似的优雅实现方式。
解决方案
forEach本身没有返回值,它仅负责遍历数组执行回调逻辑,所以赋值后会得到undefined。你可以用map方法替代,它会遍历数组并将每个回调的返回值组装成新数组返回,完美匹配你的需求:
var dataFormatted = data.map(row => row[0].split(";"));
这段代码的逻辑:
- 遍历原数组的每一个子数组
row - 取出子数组的第一个元素
row[0],用split(";")按分号拆分成新数组 map自动收集所有拆分后的数组,形成你需要的目标结构
内容的提问来源于stack exchange,提问作者Jannes
相关产品推荐
相关产品推荐

