仿淘宝后台设置商品SKU
效果图
关键代码
function getVariantFun(doubelArrays) {
let len = doubelArrays.length; //获取最外层的长度
if (len >= 2) { //如果长度大于2,继续递归
//获取参数数组的前两个
let arr1 = doubelArrays[0]['list']
let arr2 = doubelArrays[1]['list']
let newlen = arr1.length * arr2.length;
// 实例化一个新的数组
let temp = new Array(newlen)
let index = 0;
for (let i in arr1) {
for (let j in arr2) {
temp[index] = { name: arr1[i]['name'] + ',' + arr2[j]['name'] }
index++
}
}
temp = {
name: "sp",
list: temp
}
let newArray = new Array(len - 1)
newArray[0] = temp
if (len > 2) {
let _count = 1;
for (let i = 2; i < len; i++) {
newArray[_count] = doubelArrays[i]
_count++
}
}
return getVariantFun(newArray)
} else { //如果长度小于2,则返回数组
return doubelArrays[0]['list']
}
}
数据格式
[{
"name": "尺寸",
"list": [{
"name": "尺寸1"
}, {
"name": "尺寸2"
}, {
"name": "尺寸3"
}]
}, {
"name": "颜色",
"list": [{
"name": "颜色1"
}, {
"name": "颜色2"
}]
}, {
"name": "格式",
"list": [{
"name": "格式1"
}, {
"name": "格式2"
}, {
"name": "格式3"
}]
}]
思路
通过递归自己,每次组合数组的前两条