Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.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
Arrays JSON数组调用总是返回一个错误_Arrays_Json - Fatal编程技术网

Arrays JSON数组调用总是返回一个错误

Arrays JSON数组调用总是返回一个错误,arrays,json,Arrays,Json,我一直在使用pokeAPI,并对api进行了AJAX调用。当我调用api时,一切正常,我可以导航到我想要的值。然而,每当我试图从数组中获取一个值时,它就会返回这个错误 当我尝试通过数组而不是其他数组时,就会发生这种情况。这就是我过去所称的api fetch('http://pokeapi.salestock.net/api/v2/pokemon-species/' + this.state.pokemonValue + '/') .then(results => {

我一直在使用pokeAPI,并对api进行了AJAX调用。当我调用api时,一切正常,我可以导航到我想要的值。然而,每当我试图从数组中获取一个值时,它就会返回这个错误

当我尝试通过数组而不是其他数组时,就会发生这种情况。这就是我过去所称的api

fetch('http://pokeapi.salestock.net/api/v2/pokemon-species/' + this.state.pokemonValue + '/')
    .then(results => {
      return results.json();
    }).then(data => {
      this.setState({pokemonData: data});
    });
这是我试图在api中访问的数组

我找到了这个数组,通过这个数组,我找到了一个名为“name”的对象数组

我正在访问的JSON文件如下

但是,当我尝试获取其中一个数组项时,它会给出错误

console.log(pokemon.names[1]);    // === ERROR

获取代码工作正常,不会引发数组索引错误

fetch('http://pokeapi.salestock.net/api/v2/pokemon-
       species/2/').then(results => {
  return results.json();
}).then(data => {
  console.log(data.names[1]);
})

问题在于美国。由于在promise then语句中使用的是setState,then和setState都是异步函数。您可能在setState设置状态之前调用了console.log
pokemonada
。理想情况下,应该为
console.log(pokemon.names)
获取一个错误,因为
pokemon.names
是未定义的。但这取决于指令的执行时间。执行多次以确保这是实际原因。如果您不是在寻找DOM更新,请尝试使用类或全局变量而不是设置状态。

pokemon.names
?没有这样的事。你想要
pokemon[0].name
…哦,不,我想我应该显示我得到的第一个对象。包含名称的对象数组被称为“names”。不要介意向我们显示api调用,它与问题无关,请将原始JSON显示为问题中的文本(而不是图像)。然后显示解析json的代码和正在爆炸的代码我用json文件的链接编辑了这个问题,这就是解析json的代码!我是新手,所以我仍在掌握如何设置每件事的窍门。我将对我的应用程序进行一些重组。再次感谢!那么,最好的做法是让我的应用程序使用加载函数等待,直到JSON数据准备好吗?是的。您可以拥有一个加载程序,直到获取返回承诺。由于react状态的美观,您不必为加载程序维护新变量。您可以显示加载程序,直到您的州有一些数据,并在有数据时显示内容。三元条件适用于这种装载机。一旦setState设置了JSON数据,组件将自动重新呈现并执行三元条件。请参阅此部分,了解react中状态的异步性。非常感谢你的文章,这是一个很大的帮助!我有一种感觉,当我擅长它的时候,它会非常有趣和酷!
fetch('http://pokeapi.salestock.net/api/v2/pokemon-
       species/2/').then(results => {
  return results.json();
}).then(data => {
  console.log(data.names[1]);
})