let arr = [
["red", "yellow"],
["XL", "S"],
['a1', 'a2'],
['b1', 'b2'],
];
function createSKU (as=[],ks=''){
function cs(arrs){
// reAllClass上一次累加的结果集[[...],[...]]
// label 当前操作的值 [...]
// 每一次的累计都会替换上一次的reAllClass
return arrs.reduce((reAllClass,label)=>{
let ret = []
// 遍历上一次的操作结果[["HC", "red"], ["HC", "yellow"]]的每一项,与当前操作值label数组合并,组成新的数组
console.log('上一次结果集:',reAllClass)
console.log('本次值:',label)
reAllClass.forEach((item,i)=>{
// 第一层的二维数组每一项分别用当前操作的值label组成(concat)label.length长度的新的值
// ["XL", "S"]
label.forEach((itemc,c)=>{
// 例:假设这是上一次数据源[["HC", "red"], ["HC", "yellow"]]
// 第一次
// ["HC", "red", "XL"]
// ["HC", "red", "S"]
// 第二次
// ["HC", "yellow", "XL"]
// ["HC", "yellow", "S"]
ret.push(item.concat(itemc))
})
})
return ret
},[[ks]])
}
return cs(as)
}
const skuValue = createSKU(arr,'HC')
console.log('------createSKU返回值--------')
console.log(skuValue)
console.log('------结果--------')
skuValue.forEach((item, i) => {
console.log(item.toString().replace(/,/g, '-'))
})
console