var type = ["男裤", "女裤"]
var color = ["黑色", "白色"]
var size = ["S", "L"]
var stone = [1, 2, 3]
var a = [4,5,6,7,8]
var list = [type, color, size, stone, a]
console.log(descartes(list))
function descartes(list) {
return list.slice(1).reduce((p, n) => getCombineList(p, n), list[0])
}
function getCombineList(x, y) {
const combine = []
for (let i = 0; i < x.length; i++) {
for (let j = 0; j < y.length; j++) {
const result = Array.isArray(x[i]) ? [...x[i], y[j]] : [x[i], y[j]]
combine.push(result)
}
}
return combine
}