javascript - 如何映射这种类型的 API 数据?
问题描述
我正在尝试从 API 映射数据,但我遇到了一些问题。如何仅将名称推送到数组?没有称为“名称”的属性或类似的东西。
componentDidMount() {
let url = `https://contact-browser.herokuapp.com/contacts`;
let arr = []
fetch(url).then(resp => resp.json()).then((data) => arr.push(data),
this.setState({
data: arr
})
);
}
{this.state.data.map((person) => {
return <li>{person}</li>
})}
解决方案
描述
好的,查看从该 URL 返回的数据后,它返回一个对象,因此,一种简单的方法是使用Object.keys
. 如您所见,我正在使用该map
函数从 生成的数组中生成一个新数组Object.keys
,从那里将函数生成的数组传递给map
函数log
,仅用于一个小演示。
我并不是说这是有史以来最高效/性能友好的方式,但它是一种干净、简单、清晰和简洁的做事方式。
const url = `https://contact-browser.herokuapp.com/contacts`;
const log = args => console.log(args);
fetch(url).then(r => r.json()).then(d => log(Object.keys(d).map(k => d[k])));
编辑
如评论中所述,如果您想提高效率并且不关心密钥,则可以使用Object.values
,使用这种方法,只需处理更少的数据,减少处理等。
const url = `https://contact-browser.herokuapp.com/contacts`;
const log = args => console.log(args);
fetch(url).then(r => r.json()).then(d => log(Object.values(d)));
推荐阅读
- powershell - 为什么 ScriptBlock 中的命令不起作用?
- arrays - 如何将对象转换为数组?
- c# - 使用 HttpWebRequest 和 PUT 方法调用 Rest ful 服务
- mysql - 如何计算数据库中的重复项并返回它们?
- javascript - 'endsWith' 和其他字符串函数是如何在 ES5 代码中生成的
- javascript - 让 Bootstrap 4 导航栏品牌徽标独立于导航栏切换按钮对齐
- java - 如何创建一个一键四值的查找表?
- python - 你可以运行一个bash命令来调用一个带有变量的python文件吗?
- node.js - 函数运行良好但返回未定义
- angularjs - 为什么 $scope.data.task 未定义?