顾里 :) 2023-02-20 21:16 采纳率: 76.7%
浏览 62
已结题

就是选择版本的时候选择了两个版本,但是生成的时候只有第一个会生成两个版本请问怎么解决

有没有会解决这个bug的,就是选择版本的时候选择了两个版本,但是生成的时候只有第一个会生成两个版本请问怎么解决?

let descartes = this.descartes(selectValues)
console.log('生成的组合', JSON.stringify(descartes))

生成的组合是这样的:["蓝色","6GB","移动"],["蓝色","6GB","联通"],["蓝色","8GB","移动"],["蓝色","8GB","联通"]]
但是选择的时候我选择多个只有第一个会生成多个,后面的只会生成第一个是颜色和版本对应上的,后面的都只会有第一个版本,我需要的就是想上面的组合那样有几个版本就生成几个版本,有几个颜色就生成几个颜色

// parent上一级索引;count指针计数
var point = {}

var result = []
var pIndex = null
var tempCount = 0
var temp = []

// 根据参数列生成指针对象
for (var index in list) {
    if (typeof list[index] === 'object') {
        point[index] = { parent: pIndex, count: 0 }
        pIndex = index
    }
}

// 单维度数据结构直接返回
if (pIndex == null) {
    return list
}

// 动态生成笛卡尔积
while (true) {
  for (let index in list) {
       tempCount = point[index]['count']
       temp.push(list[index][tempCount])
  }

// 压入结果数组
result.push(temp)
temp = []

  // 检查指针最大值问题
while (true) {
  if (point[index]['count'] + 1 >= list[index].length) {
      point[index]['count'] = 0
      pIndex = point[index]['parent']
      if (pIndex == null) {
          return result
      }

     // 赋值parent进行再次检查
     index = pIndex
  } else {
     point[index]['count']++
     break
  }
}
  • 写回答

2条回答 默认 最新

  • MarkHan_ 2023-02-20 22:08
    关注

    该回答引用ChatGPTᴼᴾᴱᴺᴬᴵ

    如果你只能生成第一个版本的话,可能是由于其他版本的数据没有正确的输入到该函数中。你可以检查一下传入该函数的数据是否正确,或者在调用该函数之前打印出传入的参数以及该参数的数据类型,以确保它们符合预期。

    另外,该代码看起来有一些可能会引起问题的地方。例如,point 变量定义在函数之外,这可能会导致在不同的调用之间共享该变量,导致不可预期的结果。同时,使用两个嵌套的 while 循环会使代码难以阅读和理解,可以考虑使用更简单的控制结构来实现同样的功能。建议你仔细检查一下这段代码,以确保它可以正确的执行你想要的功能。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 3月5日
  • 已采纳回答 2月25日
  • 修改了问题 2月22日
  • 创建了问题 2月20日

悬赏问题

  • ¥20 给自己本科IT专业毕业的妹m找个实习工作
  • ¥15 用友U8:向一个无法连接的网络尝试了一个套接字操作,如何解决?
  • ¥30 我的代码按理说完成了模型的搭建、训练、验证测试等工作(标签-网络|关键词-变化检测)
  • ¥50 mac mini外接显示器 画质字体模糊
  • ¥15 TLS1.2协议通信解密
  • ¥40 图书信息管理系统程序编写
  • ¥20 Qcustomplot缩小曲线形状问题
  • ¥15 企业资源规划ERP沙盘模拟
  • ¥15 树莓派控制机械臂传输命令报错,显示摄像头不存在
  • ¥15 前端echarts坐标轴问题