Javascript TypeError:table.map不是函数
我只是尝试从CSV文件中获取数据,在该文件中,我必须循环一系列对象。但是循环没有发生,它抛出的array.map或array.forEach不是一个函数。 HTML文件:Javascript TypeError:table.map不是函数,javascript,json,http,fetch,Javascript,Json,Http,Fetch,我只是尝试从CSV文件中获取数据,在该文件中,我必须循环一系列对象。但是循环没有发生,它抛出的array.map或array.forEach不是一个函数。 HTML文件: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" c
<!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>
获取的数据如下所示:
今年的一年:1880年,在“年”的一年中,1880年,地球上的一个。16,“NHem”16,“NHem”:.27”,“SHem“““.04”,“24N-90N-90N”:”4.04”,“SHem“““.27”,“SEM”27”,“SEM““.27”,“SEM”4”,“4.04”,“24N-90N-90N-90N-90N-90N”:““““35”,“35”35”,“24S-24N-24N-90N-90N-90N-90N-90N-90N“““35”,“35”,“24N-35”,“24S-24N-24N-24N-24N-24N-90N-3535”,“24N-24N-24N-35”,“24S-24N-24N-24N-24N-24N-3535”,“24N-24N-24S-24N-24N”””““““““““““24S:“-.06”“64N-44N-44N-44N-44N-44N““13”“43”“43”“24N-44N-44N““““18”、“24N-24N““10”、“10”、“10”、“10”、“10”、“10”、“10”、“10”、“10”、“10”、“10”、“10”、“10”、“10”、“10”、“10”、“10”、“10”、“24N-90N-90N-24N-24N““““““““““:::10”10”、“10”、“10”、“24N-24N-24N-90N-24N-24N-24N”“““““““:10”、“10”、“10”、“20”、“24N-90N-90”、“24N-90N-90N-90N-90N-90N-90N-90N-909”、“24N-909”、“24N-90N-90N-90N-90””””””””““““““““““““““““““““““““44S-24S:“.02”,“64S-44S:“.04”,“90S-64S:”.61“},…(更多对象)]您可以尝试
JSON.parse(table).map(…
。从错误中可以看出table不是数组类型
const table = await data.text();
这是错误的
请尝试使用JSON。parse后端未将文件作为对象发送。请尝试以下操作
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'));
你有从promise返回的可映射数组吗?@SullivanTobias是的,我已经在问题的底部附加了数组的第一段是的,非常感谢,但是为什么映射函数不起作用?它是一个可映射的对象数组,为什么需要解析?请解释一下。text()不返回可映射的result@SullivanTobias数组不是JS中的可映射对象吗?它显然返回表中的arrayData是json字符串而不是json对象,并且字符串中没有map或forEach方法。使用parse,我们将json字符串转换为json对象。由于表中的json对象是数组,所以您可以使用所有函数在数组对象中可用。如果要以字符串格式打印或发送json对象,可以使用json.stringify()方法。
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'));