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

前端筹码渲染:压缩大数值、保留1-100区间较小值的映射函数实现

筹码渲染数量压缩函数实现

核心规则

  • 基础渲染逻辑:1枚筹码对应1个div,2枚对应2个div,3枚对应3个div,4枚对应3个div
  • 映射要求:实际筹码数1-100区间,以超指数压缩方式映射到1-20的显示div数量;小额筹码显示数不做明显缩减,大额筹码压缩显示数量,避免多玩家不同颜色筹码场景下DOM节点数过高
  • 边界规则:实际筹码数超过100时统一按最大20个div渲染,小于1时返回0

完整实现代码

// Map range 1-100 to 1-20 in a super exponential fashion so smaller chips don't get any smaller, but big numbers get trimmed down.
function m_n_chips(actual_chips: number): number {
  if (actual_chips < 1) return 0;
  // 小于4枚按实际数量渲染
  if (actual_chips < 4) return actual_chips;
  // 4枚按原有规则渲染3个
  if (actual_chips === 4) return 3;
  // 100枚及以上统一渲染20个
  if (actual_chips >= 100) return 20;

  // 对数形式超指数压缩:保证低区间增长接近线性,高区间增长快速放缓
  const k = 17 / Math.log(25);
  const c = 3 - k * Math.log(4);
  const display_count = k * Math.log(actual_chips) + c;

  // 取整后做区间截断,保证返回值在合法范围内
  return Math.min(20, Math.max(3, Math.round(display_count)));
}

映射效果参考

实际筹码数显示div数压缩率
1-31/2/30%
4325%
5420%
10820%
201240%
501668%
801976%
≥10020≥80%

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 08:12:11