如何从文本文件读取数据并转换为二维数组(Svelte场景)
修正方案
你的问题出在文本分割方式不对,当前用split('\n\n')是按空行分割,但你的文本里没有空行,只有换行分隔的条目,而且还需要把每行拆分成年份和名字两个元素。
修正后的完整代码如下:
<script> let text; let items = []; import { onMount } from 'svelte'; onMount(() => { loadItems(); }); const loadItems = async () => { // 注意:你提到的文件是text.dta,这里要和实际文件名对应,当前代码里写的是data.txt const response = await fetch('data.txt'); text = await response.text(); // 1. 按换行分割(兼容Windows的\r\n和Unix的\n) const lines = text.split(/\r?\n/); // 2. 过滤空行,再把每行拆分为年份和名字,年份转成数字类型 items = lines .filter(line => line.trim() !== '') .map(line => { const [year, name] = line.split(/\s+/); return [Number(year), name]; }); }; </script> {#each items as [year, name], index} <p>第{index+1}条:年份 {year},姓名 {name}</p> {/each}
关键调整说明:
- 替换
split('\n\n')为split(/\r?\n/),正确将每行内容拆分为数组元素 - 用
filter过滤掉文件末尾可能存在的空行 - 用
split(/\s+/)分割每行内容,兼容多个空格的情况,同时把年份转为数字(如果不需要数字类型,去掉Number()即可) - 遍历数组时直接解构元素,让渲染逻辑更直观
内容的提问来源于stack exchange,提问作者Pick Avana
相关产品推荐
相关产品推荐

