商品中心 sku 排列
后台动态表单
型号:
颜色:
容量:
思路
把这样三个数组
js
let names = ['iPhone 13', 'iPhone 13 Pro']
let colors = ['黑色', '白色']
let storages = ['128g', '256g']转换成:
json
[
["iPhone 13", "黑色", "128g"],
["iPhone 13", "黑色", "256g"],
["iPhone 13", "白色", "128g"],
["iPhone 13", "白色", "256g"],
["iPhone 13 Pro", "黑色", "128g"],
["iPhone 13 Pro", "黑色", "256g"],
["iPhone 13 Pro", "白色", "128g"],
["iPhone 13 Pro", "白色", "256g"]
]js
const combine = function (...chunks) {
let res = []
let helper = function (chunkIndex, prev) {
let chunk = chunks[chunkIndex]
let isLast = chunkIndex === chunks.length - 1
for (let val of chunk) {
let cur = prev.concat(val)
if (isLast) {
res.push(cur)
} else {
helper(chunkIndex + 1, cur)
}
}
}
helper(0, [])
return res
}前端展示
当前选择的型号:
型号:
颜色:
容量:
能选的sku
iPhone 13-黑色-128giPhone 13-黑色-256giPhone 13-黑色-512giPhone 13-白色-128giPhone 13-远峰蓝-128giPhone 13 Pro-黑色-512giPhone 13 Pro-白色-256giPhone 13 Pro-白色-512giPhone 13 Pro-远峰蓝-128giPhone 13 Pro-远峰蓝-256giPhone 13 Pro-远峰蓝-512giPhone 13 ProMax-白色-256giPhone 13 ProMax-远峰蓝-128giPhone 13 ProMax-远峰蓝-256giPhone 13 ProMax-远峰蓝-512g不能选的sku
iPhone 13-白色-256giPhone 13-白色-512giPhone 13-远峰蓝-256giPhone 13-远峰蓝-512giPhone 13 Pro-黑色-128giPhone 13 Pro-黑色-256giPhone 13 Pro-白色-128giPhone 13 ProMax-黑色-128giPhone 13 ProMax-黑色-256giPhone 13 ProMax-黑色-512giPhone 13 ProMax-白色-128giPhone 13 ProMax-白色-512g