You need to enable JavaScript to run this app. JavaScript如何统计与高num值关联最频繁的标签
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript如何统计与高num值关联最频繁的标签

核心计算逻辑说明

有两种主流实现逻辑,可根据实际业务场景选择:

示例说明中「friends因绑定数值1积分被拉低」的场景,更推荐使用「标签平均幸福度」逻辑计算

  • 逻辑1:标签平均幸福度
    统计每个标签出现的总次数,以及所有关联条目的num总和,用总和/次数得到平均幸福度,取平均值最高的标签。示例中计算结果为:family平均5、friends平均(5+1)/2=3、school平均4,完全符合示例描述的family得分最高的结论
  • 逻辑2:权重梯度积分
    自定义不同num区间的加减分规则,比如num≥4加5分、num=3加1分、num≤2扣2分,累加所有标签的积分后取最高值,适合需要放大高低分差距的业务场景
实现步骤
  • 第一步:遍历输入的对象数组,初始化每个标签的统计项,累计标签对应的num总和、出现次数(逻辑1)或累计对应权重积分(逻辑2)
  • 第二步:遍历统计结果,计算标签的最终得分,筛选出得分最高的标签即可
JavaScript 代码示例(逻辑1实现)
function findHappiestTag(arr) {
  const tagStats = {};
  // 第一步:统计每个标签的总幸福度和出现次数
  arr.forEach(({ num, tags }) => {
    tags.forEach(tag => {
      if (!tagStats[tag]) {
        tagStats[tag] = { totalNum: 0, occurCount: 0 };
      }
      tagStats[tag].totalNum += num;
      tagStats[tag].occurCount += 1;
    });
  });

  // 第二步:计算平均幸福度,找出最高得分标签
  let maxScore = -Infinity;
  let result = [];
  Object.entries(tagStats).forEach(([tag, { totalNum, occurCount }]) => {
    const currentScore = totalNum / occurCount;
    if (currentScore > maxScore) {
      maxScore = currentScore;
      result = [tag];
    } else if (currentScore === maxScore) {
      // 处理并列最高分的情况
      result.push(tag);
    }
  });

  return result.length === 1 ? result[0] : result;
}

// 测试示例数据
const testData = [{num: 5, tags:["friends", "family"]}, {num: 1, tags:["friends", "work"]}, {num: 4, tags:["school"]}];
console.log(findHappiestTag(testData)); // 输出结果:family

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.12 15:30:04