You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

数组嵌套对象取值异常:调用total属性始终无结果的技术求助

问题分析与解决办法

嗨,我帮你找到问题的根源啦!你之所以用data.total或data['total']拿不到值,是因为你最终返回的data是一个数组,而不是单个对象。

看你的代码:一开始你声明了var data = [],最后把series对象push进这个数组,然后return data。这意味着函数返回的结果是[series](一个只包含series的数组),而不是series本身。数组本身并没有total属性,所以自然会报错。

两种解决思路

思路一:直接返回series对象(推荐,如果你不需要返回数组的话)

既然你最终只需要这个series对象的信息,没必要把它放进数组里返回。修改代码的最后部分即可:

// 先补全total的初始化(你原来的代码里没写,可能会导致NaN)
var total = 0;
var dataequipes = [];
var children = response.data.children;

children.forEach(function (child) { 
  if(equipes.hasOwnProperty(child['id'])) { 
    total += equipes[child['id']]; 
    dataequipes.push({ id: child['id'], total: equipes[child['id']] }); 
  } 
}); 

series.domain = domainId; 
series.total = total; 
series.details = dataequipes; 

// 直接返回series对象,而不是数组
return series;

这样调用函数后,直接用返回值的total属性就能拿到结果:

var result = yourFunctionName(); // 替换成你的函数名
console.log(result.total); // 正常获取total值

思路二:如果必须返回数组,调用时取数组的第一个元素

如果你因为业务需求必须返回数组,那在调用的时候要明确取数组里的第一个元素:

var result = yourFunctionName(); // 函数返回的是[series]数组
console.log(result[0].total); // 取数组第一个元素的total属性
// 或者用方括号写法
console.log(result[0]['total']);

额外提醒

注意你的代码里total变量没有初始化,建议加上var total = 0;,否则第一次累加的时候会得到NaN,导致最终的total值不正确哦。

内容的提问来源于stack exchange,提问作者Majdi Taleb

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 07:05:42