-init数据
{
sport: ['s_1', 's_2', 's_3'],
date: ['d_1', 'd_2'],
category: ['c_1']
}
“体育”、“约会”或“体育”、“日期”、“类别”
如果输入数据=“体育”,“日期”
*产出必须如下所示。
[
's_1',
's_1|d_1',
's_1|d_2',
's_2',
's_2|d_1',
's_2|d_2',
's_3',
's_3|d_1',
's_3|d_2'
]
如果输入数据=“体育”、“日期”、“类别”
*产出必须如下所示。
['s_1',
's_1|d_1',
's_1|d_1|c_1',
's_1|d_2',
's_1|d_2|c_1'
's_2',
's_2|d_1',
's_2|d_1|c_1',
's_2|d_2',
's_2|d_2|c_1',
's_3',
's_3|d_1',
's_3|d_1|c_1',
's_3|d_2',
's_3|d_2|c_1'
]
发布于 2021-10-02 02:50:34
您可以使用递归生成器函数:
var data = {sport: ['s_1', 's_2', 's_3'], date: ['d_1', 'd_2'], category: ['c_1']}
function* combos(d, c = []){
if (c.length > 0){
yield c.join('|')
}
if (d.length > 0){
for (var i of data[d[0]]){
yield* combos(d.slice(1), [...c, i])
}
}
}
console.log([...combos(['sport', 'date'])])
console.log([...combos(['sport', 'date', 'category'])])
https://stackoverflow.com/questions/69410935
复制相似问题