最近几天公司在折腾自定义商城,又涉及到商品多规格这块,之前的商品多规格在网上看到的都是矩阵式的,自己瞎写了一套出来,虽然能用但是看起来感觉有点恶心。然后自己科学上网找ChatGPT,给了一个递归写法,代码简洁,逻辑清晰,记录一下以后用到再翻。
function generateSpecs(specs, keys, result, currentSpecs) {
if (keys.length === 0) {
result.push(currentSpecs);
return;
}
const currentKey = keys[0];
const values = specs[currentKey];
for (let i = 0; i < values.length; i++) {
const newSpecs = {
...currentSpecs
};
newSpecs[currentKey] = values[i];
generateSpecs(specs, keys.slice(1), result, newSpecs);
}
}
const specs = {
尺码: ['S', 'M', 'L'],
颜色: ['红色', '蓝色', '绿色'],
套餐: ['套餐A', '套餐B'],
型号: ['型号A'],
};
const keys = Object.keys(specs);
const result = [];
generateSpecs(specs, keys, result, {});
console.log(result);