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