如何访问JSON内嵌套结构数据 现有axios代码无输出求排查
问题排查
你代码的核心问题出在listShareholders函数的内层循环判断条件上:
- 你写的
j<a[i].shareholders是错误的,a[i].shareholders是股东数组对象,不是数字长度,这个比较结果永远为false,导致内层循环从未执行,最终返回空数组没有输出。 - 次要优化点:循环变量
i和j没有使用let/var声明,会污染全局作用域,建议补上声明。 - 可选补充:可以给异步调用加异常捕获,避免网络请求失败等情况无错误提示。
修正后代码
const axios = require('axios') require("util").inspect.defaultOptions.depth = null; async function getStocks(){ const { data } = await axios.get('https://gist.githubusercontent.com/graffixnyc/8c363d85e61863ac044097c0d199dbcc/raw/7d79752a9342ac97e4953bce23db0388a39642bf/stocks.json') return data } async function listShareholders() { let c=[] let a = await getStocks(); // 外层循环补全let声明 for(let i=0;i<a.length;i++){ // 内层循环条件加上.length,补全let声明j for(let j=0;j<a[i].shareholders.length;j++){ c.push(a[i].shareholders[j].userId) } } return c } async function bc(){ const address = await listShareholders() console.log(address) } // 调用加异常捕获 bc().catch(err => console.error('运行出错:', err))
运行效果
执行后会输出所有股东的userId组成的数组,符合你的需求。
内容的提问来源于stack exchange,提问作者Swayam Shah
相关产品推荐
相关产品推荐

