【发布时间】:2021-04-12 03:29:38
【问题描述】:
目前正试图弄清楚为什么 dataset[i]["stationId"] 以未定义的形式返回。 我也尝试使用我设置的数据,但它也会返回 undefined。但是,如果我控制台记录类似 dataset[0]["stationId"] 的内容,我将能够取回一些东西,但不是在 for 循环中。我想要做的是重组我从通话中收到的数据。
提前感谢您的回答!
const [data, setData] = useState([]);
let arr= []
var i;
useEffect(() => {
const fetchEvents = () => {
fetch(`http://${ip.trim()}:${port}/events/station`)
.then(response => response.json())
.then(json => {
setData(json);
console.log(data)
})
.then(dataset =>{
if(arr.length === 0){
arr[0] = {stationId : dataset[0]["stationId"], event_type: dataset[0]["event_type"], duration: [dataset[0]["duration"]]}
}
for(i=0; i<arr.length; i++){
for(i=0; i<dataset.length; i++){
// if station id is not the same
if(arr[i]["stationId"] !== dataset[i]["stationId"]){
arr.push(dataset[i])
}
else if(arr[i]["event_type"] === dataset[i]["event_type"]){
arr[i]["duration"].push(dataset[i]["duration"])
}
else{
arr[i]["event_type"] = dataset[i]["event_type"]
arr[i]["duration"] = [dataset[i]["duration"]]
}
}
}
})
.catch(
err => {
console.log(err);
}
);
};
fetchEvents();
}, []);
【问题讨论】:
-
您在两个
for循环中都使用i,因此您在每个循环中添加两次i。这就是出错的原因。 -
Klassiek,很好发现!非常感谢
标签: javascript reactjs asynchronous fetch call