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

React和Lodash新手:处理数组数据时SHOT__Goals未定义怎么解决?

如何正确引用selectedPlayers中的SHOT__Goals值并四舍五入到两位小数?

首先得点明问题核心:你的selectedPlayers是一个类数组对象(键为0、1的对象),而非单个玩家对象。你直接访问selectedPlayers.SHOT__Goals自然会返回undefined——因为这个属性属于每个子对象(比如selectedPlayers[0]、selectedPlayers[1]),并不是selectedPlayers本身的属性。另外你的原函数还有个小笔误:return goals;应该是return goal;(变量名写错了)。

下面分两种场景给你具体解决方案:

场景1:处理单个玩家的目标值

如果你想获取某一个玩家的目标值并格式化,需要先拿到对应的玩家对象,再访问SHOT__Goals:

// 传入selectedPlayers和要获取的玩家索引
const getSingleFormattedGoal = (selectedPlayers, playerIndex) => {
  // 先拿到对应索引的玩家对象,做空值判断避免报错
  const targetPlayer = selectedPlayers[playerIndex];
  if (!targetPlayer?.SHOT__Goals) return '0.00';
  
  // 用Lodash的round做四舍五入,再用toFixed确保两位小数
  return _.round(targetPlayer.SHOT__Goals, 2).toFixed(2);
}

// 调用示例
console.log(getSingleFormattedGoal(selectedPlayers, 0)); // 输出 "1.22"
console.log(getSingleFormattedGoal(selectedPlayers, 1)); // 输出 "0.89"(注意:0.888888四舍五入两位是0.89哦)

场景2:处理所有玩家的目标值

如果要批量处理所有玩家的目标值,返回格式化后的数组或对象,可以用Lodash的map或mapValues来遍历:

// 返回格式化后的目标值数组
const getAllFormattedGoals = (selectedPlayers) => {
  return _.map(selectedPlayers, (player) => {
    // 同样做空值处理
    if (!player?.SHOT__Goals) return '0.00';
    return _.round(player.SHOT__Goals, 2).toFixed(2);
  });
}

// 调用后得到 ["1.22", "0.89"]
console.log(getAllFormattedGoals(selectedPlayers));

// 如果想保留原对象结构,返回格式化后的对象
const getFormattedPlayers = (selectedPlayers) => {
  return _.mapValues(selectedPlayers, (player) => {
    return {
      SHOT__Goals: player?.SHOT__Goals ? _.round(player.SHOT__Goals, 2).toFixed(2) : '0.00'
    };
  });
}

// 调用后得到 { 0: { SHOT__Goals: "1.22" }, 1: { SHOT__Goals: "0.89" } }
console.log(getFormattedPlayers(selectedPlayers));

额外小提示

  • toFixed(2)返回的是字符串类型,如果需要数字类型,可以用Number()转换,比如Number(_.round(player.SHOT__Goals, 2).toFixed(2))
  • 记得处理空值情况(比如玩家对象不存在或者SHOT__Goals缺失),避免代码报错

内容的提问来源于stack exchange,提问作者Tom Rudge

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 09:05:40