简体   繁体   English

TypeError:data.map不是函数

[英]TypeError: data.map is not a function

Im really stuck on this figuring out what did I miss, Im not that expert about javascript, if someone can please tell me what I did wrong, I really appreciate. 我真的很想弄清楚我想念的是什么,我不是关于javascript的专家,如果有人可以告诉我我做错了什么,我真的很感激。

I have a working code: 我有一个工作代码:

if (value_ == "group") {
  fetch("http://localhost/someapi"+value_).then(r => { return r.json()})
  .then(json => {
      var data =  `{ "group" : [{"name":"foo","tag":"bar"},{"name":"bool","tag":"lean"}] }`;
      var data = JSON.parse(data); 
      var groupName = data.group.map(current => current.name);
      var groupTag = data.group.map(current => current.tag);
      console.log(data);         
      console.log(`json: ${data.group[0].name}`);
    });
}

the code above will work and get every data I wanted, but the json is from the: 上面的代码将工作并获取我想要的每个数据,但json来自:

var data =  `{ "group" : [{"name":"foo","tag":"bar"},{"name":"bool","tag":"lean"}] }`;

then I tried to get the json from the URL which return the same value as the var data above. 然后我尝试从URL中获取json,该json返回与上述var数据相同的值。 But it doesn' work. 但这行不通。

which I did change var data = JSON.parse(data); 我确实更改了var data = JSON.parse(data); into data = JSON.parse(json) data = JSON.parse(json)

and delete "var data = { "group" : [{"name":"foo","tag":"bar"},{"name":"bool","tag":"lean"}] } ;" 并删除“ var data = { "group" : [{"name":"foo","tag":"bar"},{"name":"bool","tag":"lean"}] } ; “

And it does give an error: (node:10868) UnhandledPromiseRejectionWarning: SyntaxError: Unexpected end of JSON input 它确实给出了一个错误: (node:10868) UnhandledPromiseRejectionWarning: SyntaxError: Unexpected end of JSON input

I also tried this code: 我也尝试了这段代码:

  fetch("http://localhost/someapi"+value_).then(r => { return r.json()})
  .then(json => {
      parseJSON(JSON.stringify(json));
      function parseJSON(str){
        var data = JSON.parse(str); 
        var groupName = data.group.map(current => current.name);
        var groupTag = data.group.map(current => current.tag);
        console.log(data);         
        console.log(`json: ${data.group[0].name}`);
      }

    });
}

this give me error: (node:12668) UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'map' of undefined . 这给了我错误: (node:12668) UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'map' of undefined

Thanks and pardon my english. 谢谢,请原谅我的英语。

You don't need to execute JSON.parse manually because the content of json variable in the third line of your example is already an object. 您无需手动执行JSON.parse,因为示例第三行中json变量的内容已经是一个对象。

Try this: 尝试这个:

fetch("http://localhost/someapi"+value_)
.then(r => r.json())
.then(json => {
  var groupName = json.group.map(current => current.name);
  var groupTag = json.group.map(current => current.tag);
  console.log('groupName', groupName);         
  console.log('groupTag', groupTag);         
});

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM