如何从嵌套JSON中获取showstopinfo最大值?代码返回NaN求解
代码问题分析及修正
问题1:属性名拼写错误
原数据里showstopinfo是直接挂载在ticketinfooo对象下的,但你的代码写成了x.ticketinfooo.stoppinfoo.showstopinfo——多了一层不存在的stoppinfoo属性,访问不存在的属性会返回undefined,这是导致Math.max返回NaN的核心原因之一。
问题2:嵌套数组未正确平铺
data.map(e => e.info.map(...))会生成一个二维数组(比如[[1,6], [22,23]]),直接用...展开这个二维数组传给Math.max,相当于给函数传入了两个数组参数,而Math.max无法直接处理数组作为参数(仅支持展开后的单个数字),这也会导致计算结果为NaN。
修正后的代码
// 先把所有showstopinfo值平铺成一维数组,再求最大值 var max = Math.max(...data.flatMap(e => e.info.map(x => x.ticketinfooo.showstopinfo))) console.log(max) // 输出23
如果运行环境不支持flatMap,可以用更兼容的写法:
var allValues = []; data.forEach(e => { e.info.forEach(x => { allValues.push(x.ticketinfooo.showstopinfo); }); }); var max = Math.max(...allValues); console.log(max) // 输出23
内容的提问来源于stack exchange,提问作者sahar
相关产品推荐
相关产品推荐

