顾里 :) 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日

悬赏问题

  • ¥15 企业资源规划ERP沙盘模拟
  • ¥15 前端echarts坐标轴问题
  • ¥15 CMFCPropertyPage
  • ¥15 ad5933的I2C
  • ¥15 请问RTX4060的笔记本电脑可以训练yolov5模型吗?
  • ¥15 数学建模求思路及代码
  • ¥50 silvaco GaN HEMT有栅极场板的击穿电压仿真问题
  • ¥15 谁会P4语言啊,我想请教一下
  • ¥15 这个怎么改成直流激励源给加热电阻提供5a电流呀
  • ¥50 求解vmware的网络模式问题 别拿AI回答