有以下数据:
const labels = [
["红色", "黄色", "蓝色"],
["8g", "12g", "16g", "24g"],
["小米10", "小米11", "小米12", "小米13"],
["pro", "plus"],
// 后续N个参数列表
...
];
要求是,将所有项按顺序一一组合,如 红色8g小米10pro,红色8g小米10plus,红色8g小米11pro,红色8g小米11plus,...
以下是我的暴力解法
const combination = labels.reduce((result, item) => {
if (!result.length) {
result = [...item];
} else {
result = connect(result, item);
}
return result;
}, []);
function connect(s1, s2) {
const c = [];
s1.forEach(_s1 => {
s2.forEach(_s2 => {
c.push(_s1 + _s2);
});
});
return c;
};
再者,不按顺序又该如何解
你解法已经很好了,对于不按顺序组合的问题,你可以用递归的方法来实现: