D3.js遍历嵌套数组查找grouped_ratings下value字段最大值
错误原因
- 内层逻辑错误:
d3.max要求入参为数组,若v.value是单个数值,直接调用d3.max(v.value)会返回undefined,无法得到正确值 - 外层逻辑错误:你在第一层
d3.max的迭代函数中返回了d3.map生成的数组,d3.max默认无法直接计算嵌套数组的最大值,最终返回结果不符合预期
修复代码
最简洁的写法是直接嵌套调用d3.max,不需要额外做数组映射:
var yMax = d3.max(grouped_ratings, function(g) { // 计算单个分组下所有value的最大值 return d3.max(g.values, function(v) { // 直接返回目标字段值即可,d3.max会自动遍历取值 return v.value; }); });
如果需要兼容更深层级的结构,也可以先把所有目标字段提取为一维数组再计算最大值:
const allValues = [] grouped_ratings.forEach(g => { g.values.forEach(v => allValues.push(v.value)) }) const yMax = d3.max(allValues)
内容的提问来源于stack exchange,提问作者pindotcom
相关产品推荐
相关产品推荐

