reactjs - 从对象列表中获取值数组
问题描述
我确定这只是一个简单的问题,但无论我做什么我都无法解决它。假设我有这样的 API。
[
{
"userId": 1,
"id": 1,
"title": "sunt aut facere repellat provident occaecati excepturi optio reprehenderit",
"body": "quia et suscipit\nsuscipit recusandae consequuntur expedita et cum\nreprehenderit molestiae ut ut quas totam\nnostrum rerum est autem sunt rem eveniet architecto"
},
{
"userId": 1,
"id": 2,
"title": "qui est esse",
"body": "est rerum tempore vitae\nsequi sint nihil reprehenderit dolor beatae ea dolores neque\nfugiat blanditiis voluptate porro vel nihil molestiae ut reiciendis\nqui aperiam non debitis possimus qui neque nisi nulla"
},
{
"userId": 1,
"id": 3,
"title": "ea molestias quasi exercitationem repellat qui ipsa sit aut",
"body": "et iusto sed quo iure\nvoluptatem occaecati omnis eligendi aut ad\nvoluptatem doloribus vel accusantium quis pariatur\nmolestiae porro eius odio et labore et velit aut"
},
{
"userId": 1,
"id": 4,
"title": "eum et est occaecati",
"body": "ullam et saepe reiciendis voluptatem adipisci\nsit amet autem assumenda provident rerum culpa\nquis hic commodi nesciunt rem tenetur doloremque ipsam iure\nquis sunt voluptatem rerum illo velit"
}
]
我想提取 id 的值并将其存储在数据中,所以我得到这样的列表
[1, 2, 3, 4, ...]
这是我尝试过的
import React, {useEffect, useState} from 'react'
import axios from 'axios'
function App() {
const [data, setData] = useState([])
useEffect(() => {
axios.get('https://jsonplaceholder.typicode.com/posts')
.then(res => res.data.map(e => setData([...data, e.id])))
}, [])
return (
<div>
<ul>
{data.map(e => <li key={e}>{e}</li>)}
</ul>
</div>
)
}
export default App
我认为它会起作用,但是我没有像我想要的那样获取 id 列表,而是只获取列表中最后一个对象的 id。有人可以给我工作代码,以便我可以从中学习吗?谢谢你的帮助 :)
解决方案
您可以使用.map
.
const arr = [
{
"userId": 1,
"id": 1,
"title": "sunt aut facere repellat provident occaecati excepturi optio reprehenderit",
"body": "quia et suscipit\nsuscipit recusandae consequuntur expedita et cum\nreprehenderit molestiae ut ut quas totam\nnostrum rerum est autem sunt rem eveniet architecto"
},
{
"userId": 1,
"id": 2,
"title": "qui est esse",
"body": "est rerum tempore vitae\nsequi sint nihil reprehenderit dolor beatae ea dolores neque\nfugiat blanditiis voluptate porro vel nihil molestiae ut reiciendis\nqui aperiam non debitis possimus qui neque nisi nulla"
},
{
"userId": 1,
"id": 3,
"title": "ea molestias quasi exercitationem repellat qui ipsa sit aut",
"body": "et iusto sed quo iure\nvoluptatem occaecati omnis eligendi aut ad\nvoluptatem doloribus vel accusantium quis pariatur\nmolestiae porro eius odio et labore et velit aut"
},
{
"userId": 1,
"id": 4,
"title": "eum et est occaecati",
"body": "ullam et saepe reiciendis voluptatem adipisci\nsit amet autem assumenda provident rerum culpa\nquis hic commodi nesciunt rem tenetur doloremque ipsam iure\nquis sunt voluptatem rerum illo velit"
}
];
const newArr = arr.map(ele => ele.id);
console.log(newArr);
更新
import React, {useEffect, useState} from 'react'
import axios from 'axios'
function App() {
const [data, setData] = useState([])
useEffect(() => {
axios.get('https://jsonplaceholder.typicode.com/posts')
.then(res => setData(res.data.map(ele => ele.id)))
}, [])
return (
<div>
<ul>
{data.map(ele => <li key={ele}>{ele}</li>)}
</ul>
</div>
)
}
export default App
推荐阅读
- excel - 根据我们可能所在的前一个月过滤12个月前的数据,而无需手动输入开始和结束日期?
- c# - 为什么我的服务器无法响应来自网络浏览器的客户端请求?
- r - 如何在ggplot2的文本中下标字母或数字
- java - 如何使用 selenium 检查警报的可见性
- reactjs - 无法在反应js中获取道具中的数据
- web-services - 如何从外部监听客户端对 ASMX Web 服务服务器的调用?
- mongodb - 带有添加字段的 Mongolite 聚合查询
- php - 在 laravel 中使用 import excel 更新 join 2 表
- sql-server - 使用日期时间参数从 Excel PowerQuery 调用 SQL Server 存储过程对我不起作用
- kettle - 在转换中解析 CSV