Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript TypeError:table.map不是函数_Javascript_Json_Http_Fetch - Fatal编程技术网

Javascript TypeError:table.map不是函数

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

我只是尝试从CSV文件中获取数据,在该文件中,我必须循环一系列对象。但是循环没有发生,它抛出的array.map或array.forEach不是一个函数。 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>
获取的数据如下所示:
今年的一年: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'));