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

React Native评分App:从JS对象取值计算平均值并生成新对象

解决React Native中同结构对象的value平均值计算问题

嘿,我刚好处理过类似的需求,给你两个实用方案,分别对应你当前的场景和可能扩展的情况:

方案一:针对所有对象name相同的场景

如果你的数组里所有对象的name都是一致的(比如示例里的foo),可以用这个简单直接的函数:

function calculateAverageObject(arr) {
  // 先做边界检查,避免空数组或undefined导致报错
  if (!arr || arr.length === 0) {
    return { name: '', value: 0 }; // 这里可以换成你需要的默认值,比如null
  }

  // 提取所有对象的value值,生成纯数值数组
  const values = arr.map(item => item.value);
  // 计算value总和
  const total = values.reduce((accumulator, currentValue) => accumulator + currentValue, 0);
  // 计算平均值
  const averageValue = total / values.length;

  // 生成包含平均值的新对象
  return {
    name: arr[0].name, // 取第一个对象的name,因为所有name都相同
    value: averageValue
  };
}

// 测试示例
var arr = [ {"name":"foo","value":2}, {"name":"foo","value":4} ];
const averageObj = calculateAverageObject(arr);
console.log(averageObj); // 输出: { name: 'foo', value: 3 }

步骤拆解:

  • 边界检查:提前拦截空数组或无效输入,避免后续代码报错
  • 提取value:用map快速把对象数组转换成纯数值数组,方便计算
  • 计算总和:用reduce累加所有value值,初始值设为0确保逻辑安全
  • 生成新对象:复用原对象的name,把平均值作为新的value

方案二:支持多name分组计算平均值

如果之后你的需求扩展,数组里会出现不同name的对象,这个分组计算的方案会更实用:

function calculateAverageByGroupName(arr) {
  if (!arr || arr.length === 0) {
    return [];
  }

  // 第一步:按name分组,把相同name的value放在一起
  const groupedData = arr.reduce((accumulator, item) => {
    if (!accumulator[item.name]) {
      accumulator[item.name] = [];
    }
    accumulator[item.name].push(item.value);
    return accumulator;
  }, {});

  // 第二步:遍历分组数据,计算每个name的平均值并生成新对象
  return Object.entries(groupedData).map(([name, values]) => {
    const total = values.reduce((acc, curr) => acc + curr, 0);
    const average = total / values.length;
    return { name, value: average };
  });
}

// 测试示例
var arr = [ 
  {"name":"foo","value":2}, 
  {"name":"foo","value":4},
  {"name":"bar","value":5},
  {"name":"bar","value":7}
];
const resultArray = calculateAverageByGroupName(arr);
console.log(resultArray); 
// 输出: [ { name: 'foo', value: 3 }, { name: 'bar', value: 6 } ]

优势:

  • 自动按name分组,一次处理多个不同name的对象集合
  • 返回的是包含所有分组平均值对象的数组,扩展性更强

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 03:56:59