Ошибка типа: data.map не является функцией - PullRequest
0 голосов
/ 09 сентября 2018

Я действительно застрял в этом выяснении того, что я упустил, я не тот специалист по javascript, если кто-то может сказать мне, что я сделал не так, я действительно ценю.

У меня есть рабочий код:

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}`);
    });
}

приведенный выше код будет работать и получать все данные, которые я хотел, но JSON получен из:

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

, затем я попытался получить JSON из URL, который возвращает тот же самыйзначение как данные var выше.Но это не работает.

, который я изменил var data = JSON.parse(data); на data = JSON.parse(json)

и удалил "var data = { "group" : [{"name":"foo","tag":"bar"},{"name":"bool","tag":"lean"}] };"

И это выдает ошибку: (node:10868) UnhandledPromiseRejectionWarning: SyntaxError: Unexpected end of JSON input

Я также попробовал этот код:

  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}`);
      }

    });
}

, это дает мне ошибку: (node:12668) UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'map' of undefined.

Спасибо и простите мой английский.

1 Ответ

0 голосов
/ 09 сентября 2018

Вам не нужно выполнять JSON.parse вручную, потому что содержимое переменной json в третьей строке вашего примера уже является объектом.

Попробуйте это:

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);         
});
...