React中如何获取嵌套对象的动态第一层键对应的数据?
解决方案
核心思路:无需硬编码users下的键名,通过Object.values()提取users对象下的所有属性值,即可适配动态键名的场景。
场景1:users下始终仅包含1个用户对象(和示例结构一致)
直接提取第一个用户对象即可,修改后的代码如下:
const [subparameters, setSubParameters] = React.useState(null); // 先做非空判断,避免接口返回异常时报错 if (r?.data?.users && Object.keys(r.data.users).length > 0) { // 提取users下第一个用户的对象,无需关注具体键名 const targetUser = Object.values(r.data.users)[0]; const params = []; for (const [key, value] of Object.entries(targetUser)){ const _parm = {parKey: key, parValue: value }; console.log(_parm); params.push(_parm); } // 循环结束后统一更新state,避免多次触发不必要的重渲染 setSubParameters(params) }
场景2:users下可能包含多个动态键名的用户
如果需要遍历所有用户的所有属性,嵌套遍历即可:
const [subparameters, setSubParameters] = React.useState(null); if (r?.data?.users) { const params = []; // 外层遍历所有用户对象 for (const user of Object.values(r.data.users)) { // 内层遍历单个用户的所有属性 for (const [key, value] of Object.entries(user)) { params.push({parKey: key, parValue: value }); } } setSubParameters(params) }
内容的提问来源于stack exchange,提问作者Alpaka
相关产品推荐
相关产品推荐

