首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >基于JS的动态树算法

基于JS的动态树算法
EN

Stack Overflow用户
提问于 2021-10-01 19:08:42
回答 1查看 85关注 0票数 1

-init数据

代码语言:javascript
运行
复制
{
sport: ['s_1', 's_2', 's_3'],
date: ['d_1', 'd_2'],
category: ['c_1']
}

  • 输入数据(动态字段)

“体育”、“约会”或“体育”、“日期”、“类别”

  • 输出数据

如果输入数据=“体育”,“日期”

*产出必须如下所示。

代码语言:javascript
运行
复制
[
'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'
]

如果输入数据=“体育”、“日期”、“类别”

*产出必须如下所示。

代码语言:javascript
运行
复制
['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'
]
EN

回答 1

Stack Overflow用户

发布于 2021-10-02 02:50:34

您可以使用递归生成器函数:

代码语言:javascript
运行
复制
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'])]) 

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69410935

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档