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

有没有会解决这个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
  }
}

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

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

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

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^