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

如何为NPM包中的RNG添加长度控制以生成指定长度数字字符串?

当然可行!我来帮你修复代码问题

首先肯定你的需求完全没问题,咱们先拆解下你现有代码里导致返回NaN/undefined的问题:

  • 你重复声明了var size,这会导致变量覆盖,而且var的变量提升特性可能带来意外问题
  • newToken是单个随机数字,你试图用newToken[size]去访问它的"索引"——但数字不是数组或字符串,这样的访问只会得到undefined,最终返回的自然就是无效值了

接下来是修正后的完整代码,我还加了参数合法性检查来避免无效输入:

module.exports = function token(min, max, size) {
  // 设置size的默认值为128,用const避免变量意外修改
  const targetSize = size || 128;
  
  // 先做参数校验,防止用户传入无效值
  if (typeof min !== 'number' || typeof max !== 'number' || min > max) {
    throw new Error('min 和 max 必须是数字,且 min 不能大于 max');
  }
  if (!Number.isInteger(targetSize) || targetSize <= 0) {
    throw new Error('size 必须是正整数');
  }
  
  let result = '';
  // 循环targetSize次,每次生成一个范围内的随机数并拼接到结果字符串
  for (let i = 0; i < targetSize; i++) {
    const randomNum = Math.floor(Math.random() * (max - min + 1)) + min;
    result += randomNum.toString();
  }
  
  return result;
};

代码说明:

  • 用const声明targetSize替代重复的var,避免变量污染
  • 新增参数校验:确保min/max是合法数字,size是正整数,避免后续逻辑出错
  • 通过循环targetSize次,每次生成一个指定范围的随机数,转成字符串后拼接到结果里,最终得到你需要的指定长度的数字字符串

测试示例:

当你调用token(0, 21, 23)时,会生成类似"10215371901218461159207"这样的23位字符串(每次运行结果都是随机的),完全符合你的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 03:49:38