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

如何让Node.js函数异步?为何createResponse偶发返回键值对数量不足

问题原因
  • 代码的核心问题是随机数重复覆盖了对象的已有键:你每次循环生成0~100之间的整数作为response的键,6次循环过程中很容易出现重复的随机值,后一次的赋值会直接覆盖前一次同键名的内容,最终导致对象的键值对总数小于6。
  • 你之前把separateResult()改为异步实现的操作完全不对症,自然解决不了问题。
修复方案

你可以修改随机数生成逻辑,确保每次生成的键不会重复,示例代码如下:

function createResponse(rows) {
  const response = {}
  for (let i = 0; i < 6; i++) {
    let random
    // 循环生成随机数,直到生成的键不存在于当前response中
    do {
      random = Math.floor(Math.random() * 101)
    } while (Object.prototype.hasOwnProperty.call(response, random))
    response[random] = rows[i].user_name
  }
  return response
}
补充说明

如果你的业务场景允许键的取值范围更大,也可以调整随机数的生成区间(比如扩大到0~1000),进一步降低重复概率,不过上面的去重检查逻辑是最稳妥的,能100%保证返回6个键值对。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 02:36:04