![](/img/trans.png)
[英]React/Redux simple table throwing data.map is not a function TypeError
[英]TypeError: table.map is not a function
我只是想从 CSV 文件中获取数据,我必须在其中循环对象数组。 但是循环没有发生,它抛出的 array.map 或 array.forEach 不是 function。 HTML 文件:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script src="https://cdn.jsdelivr.net/npm/chart.js@3.1.0/dist/chart.min.js"></script>
</head>
<body>
<canvas id="chart" width="400" height="400">
</canvas>
<script>
fetchData();
async function fetchData(){
try {
const data = await fetch('http://localhost:3000/');
const table = await data.text();
console.log(table);
table.map(item => {
console.log(item["Year"])
});
} catch (error) {
console.error(error);
}
}
</script>
</body>
</html>
后端 node.js 文件:
const express = require('express');
var app = express();
const cors = require('cors')
var fs = require('fs').promises;
var parse = require('csv-parse/lib/sync');
app.get('/',cors(), async (req, res) => {
(async function () {
const fileContent = await fs.readFile('test.csv');
const records = parse(fileContent,{columns:true});
res.send(records);
})();
});
app.listen('3000',() => console.log('listening on 3000'));
获取的数据如下所示: [{"Year":"1880","Glob":"-.16","NHem":"-.27","SHem":"-.04","24N- 90N":"-.35","24S-24N":"-.13","90S-24S":"-.01","64N-90N":"-.81","44N-64N" :"-.46","24N-44N":"-.26","EQU-24N":"-.15","24S-EQU":"-.10","44S-24S":" -.03","64S-44S":".05","90S-64S":".65"},{"Year":"1881","Glob":"-.08","NHem" :"-.17","SHem":".01","24N-90N":"-.33","24S-24N":".10","90S-24S":"-.06" ,"64N-90N":"-.92","44N-64N":"-.43","24N-44N":"-.18","EQU-24N":".10","24S -EQU":".11","44S-24S":"-.05","64S-44S":"-.07","90S-64S":".58"},{"年份": "1882","Glob":"-.10","NHem":"-.20","SHem":"-.01","24N-90N":"-.29","24S-24N ":"-.05","90S-24S":".02","64N-90N":"-1.42","44N-64N":"-.25","24N-44N":"- .12","EQU-24N":"-.05","24S-EQU":"-.05","44S-24S":".02","64S-44S":".04", "90S-64S":".61"},.....(更多对象)]
您可以尝试JSON.parse(table).map(...
。从错误看来,表不是数组类型。
const table = await data.text();
是错的
尝试使用 JSON.parse
后端未将文件作为 object 发送。 尝试这个
const express = require('express');
var app = express();
const csvFilePath='./test.csv'
const csv=require('csvtojson')
csv()
.fromFile(csvFilePath)
const getData = async ()=>{
const jsonArray= await csv().fromFile(csvFilePath);
return jsonArray
}
// Async / await usage
app.get('/', async (req, res)=>{
let data = await getData()
return res.send(data)
})
app.listen('3000',() => console.log('listening on 3000'));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.