我是 React.js 的新手(使用钩子)并且想通过简单地做我自己的项目(编码)来学习,我的问题是我想从 ksngfr.com/something.txt 和数据中获取数据我从那里得到的是“2005-07-09 03:05 1:74539 2:29735 3:95426 4:35489 ...”,它是“.txt”,我想将它们放入这样的数组中:[“74539”,“29735”,“95426”,“35489”],正如你所看到的,我不想把它放在数组“2005-07-09 03:05”中,我已经从互联网上查看并提出有解决方案,但收到错误消息“TypeError:无法读取 null 的属性 'split'”。英语不是我的母语,如有错误请见谅
我正在获取的数据:
这就是我想要实现的:
我的代码:
function App() {
const [data, setData] = useState(null);
var daattaa, k;
const obj = {};
useEffect(() => {
const fetchData = async () => {
let corsAnywhere = "https://cors-anywhere.herokuapp.com/";
let something = "http://ksngfr.com/something.txt";
await fetch(corsAnywhere + something)
.then((response) => response.text())
.then((result) => {
setData(result);
});
};
fetchData();
}, []);
daattaa = data.split(" ");
daattaa.forEach((d) => {
var propertyK = d.split(":")[0];
var propertyv = d.split(":")[1];
obj[propertyK] = propertyv;
});
k = Object.values(obj);
console.log(k);
return (
<div className="App">
{k.map((content) => (
<h1>{content}</h1>
))}
</div>
);
}
export default App;
答案 0 :(得分:0)
试试这个算法:
const theDataArr = data.split('\n\r');
const nums = theDataArr.map((cur, index) => {
if (index === 0)
return undefined;
return cur.split(':')[1];
});
答案 1 :(得分:0)
您收到错误是因为最初的数据设置为 null
并且当您的实际数据被获取并在后台设置时,daattaa = data.split(" ")
(作为 null.split(" "))将得到执行。
改变
daattaa = data.split(" ");
到 daattaa = data ? data.split(" ") : [];
应该可以工作。
您也可以使用 const [data, setData] = useState([]);
and 并根据结果设置格式化数组
useEffect(() => {
const fetchData = async () => {
let corsAnywhere = "https://cors-anywhere.herokuapp.com/";
let something = "http://ksngfr.com/something.txt";
await fetch(corsAnywhere + something)
.then((response) => response.text())
.then((result) => {
setData(result.split(" "));
});
};
fetchData();
}, []);
然后您根本不需要 daattaa
变量。
答案 2 :(得分:0)
你可以在正则表达式的帮助下做这样的事情:
var input = "2005-07-09 03:05 1:74539 2:29735 3:95426 4:35489";
var arr = input.split(" ");
var regex = /[\w:]+(?=;|$)/;
arr.forEach((text, i) => {
if (i > 1) {
var curText = regex.exec(text).toString();
alert(curText.split(':')[1]);
}
});
https://codesandbox.io/s/focused-shannon-c3y37?file=/src/index.js