Javascript 如何在JS中从数组而不是对象中获取数据?

Javascript 如何在JS中从数组而不是对象中获取数据?,javascript,reactjs,Javascript,Reactjs,所以我不是100%确定这是问题所在,但是我使用fetch方法从这个链接获取数据。然后我试着在上面使用.map功能。我没有工作,而是得到了一个未处理的拒绝(TypeError):jedis.map不是一个函数错误 当我登录绝地时,我得到了你在链接中看到的一切,比如计数:87,下一个:,等等 我假设这个错误意味着绝地武士实际上是一个物体而不是一个阵列。但是,我也不能完全肯定这就是原因。如果是,我如何访问数据,使绝地武士是一个数组而不是一个对象 import React from 'react'; i

所以我不是100%确定这是问题所在,但是我使用fetch方法从这个链接获取数据。然后我试着在上面使用
.map
功能。我没有工作,而是得到了一个
未处理的拒绝(TypeError):jedis.map不是一个函数
错误

当我登录绝地时,我得到了你在链接中看到的一切,比如计数:87,下一个:,等等

我假设这个错误意味着绝地武士实际上是一个物体而不是一个阵列。但是,我也不能完全肯定这就是原因。如果是,我如何访问数据,使绝地武士是一个数组而不是一个对象

import React from 'react';
import './App.css';
import CardList from './CardList'

class App extends React.Component{
  constructor() {
    super();
    this.state = {
      jedis: []
    }
  }

  componentDidMount() {
    fetch('https://swapi.py4e.com/api/people').then(resp => resp.json())
    .then(jedi => this.setState({jedis: jedi}));
  }


  render() {
    return (
      <CardList jedis={this.state.jedis}/>

      )
  }

}

export default App;
从“React”导入React;
导入“/App.css”;
从“/CardList”导入卡片列表
类应用程序扩展了React.Component{
构造函数(){
超级();
此.state={
绝地武士:[]
}
}
componentDidMount(){
取('https://swapi.py4e.com/api/people)。然后(resp=>resp.json()
.then(jedi=>this.setState({jedis:jedi}));
}
render(){
返回(
)
}
}
导出默认应用程序;
从“React”导入React
从“./卡”导入卡
常数卡片列表=({jedis})=>{
返回(
{
//控制台日志(绝地武士)
绝地武士地图((绝地武士,i)=>{
返回(
)
})
} 
)   
}
导出默认卡片列表;
这是我使用的API,以防有人怀疑
根据API的响应

将您的
卡片列表
组件道具更改为:

<CardList jedis={this.state.jedis.results} />

假设您希望在每次提取时继续添加到数组中,则需要使用扩展运算符和
previousState

fetch('https://swapi.py4e.com/api/people').then(resp => resp.json())
.then(jedi => { 

    this.setState((previousState) => {
      return {
        jedis: [...previousState.jedis, jedi.results],
      };
    });

});

这很简单。实际上,您需要将响应对象转换为数组,然后在其上运行
map
。下面是一个示例,假设您将数字作为键,如果您的obj响应键不是数字而是常规字符串,则可以在return语句中将
Number(key)
替换为
key

var obj={“1:5”,2:7,3:0,4:0};
var result=Object.keys(obj.map)(函数(键){
返回[编号(键),对象[键];

});

绝地武士。结果。地图
?已经尝试过了,但没有成功。刚刚得到一个
TypeError:无法读取未定义的属性“map”
error这是因为您正在将状态初始化为
this.state={jedis:[]}
。把它改成
this.state={jedis:{results:[]}}
哦,我现在明白你以前的意思了。是的,这很有效。非常感谢。
this.state = {
  jedis: {
    count: 0,
    previous: null,
    next: null,
    results: []
  }
}
fetch('https://swapi.py4e.com/api/people').then(resp => resp.json())
.then(jedi => { 

    this.setState((previousState) => {
      return {
        jedis: [...previousState.jedis, jedi.results],
      };
    });

});