关于"表驱动法"的疑问.谢谢大家.

大家猴年好, 最近看到 表驱动法,刚好碰到类似的情况,于是尝试实现.但是觉得根本没有实现.
请看代码.
一共有三个问题

  1. 上方的表定义 有什么比较好的办法吗?虽然人工的列出了所有的可能性,但是感觉很傻... 如果在多一个条件,或N个条件,那彻底没办法人工枚举了...
  2. if 是否有优雅一点的写法呢
  3. 为什么我这里 return e[3]; 不会中断 forEach呢

感谢你的回复.

function getParentId(level, focusType, addType, select_id, parent_id) {
            // focusType 0 = 节点  1 = 事项
            // addType 0 = 节点  1 = 事项
            var default_id = 1;
            var array = [
                //[level,focusType,addType,returnKey]
                [1, 0, 0, select_id],//选第一层节点,选节点,加节点 --> 返回 当前节点的key
                [1, 1, 0, default_id],//选第一层节点,选事项,加节点 --> 返回 1
                [1, 0, 1, select_id],//选第一层节点,选节点,加事项 --> 返回 当前节点的key
                [1, 1, 1, parent_id],//选第一层节点,选事项,加事项 --> 返回 父节点key

                [0, 1, 0, parent_id],//非第一层节点,选事项,加节点 --> 返回 父节点key
                [0, 0, 0, select_id],//非第一层节点,选节点,加节点 --> 返回 当前节点的key
                [0, 0, 1, select_id],//非第一层节点,选节点,加事项 --> 返回 当前节点的key
                [0, 1, 1, parent_id]//非第一层节点,选事项,加事项--> 返回 父节点key
            ];

            /*
            * 问题1 上方的表定义 有什么比较好的办法吗?
            * 虽然这里人为的列出了所有的可能性,但是感觉很傻... 如果在多一个条件,或N个条件,那彻底没办法人工枚举了...
            * */

            var id = default_id;
            array.forEach(function (e) {
                if (
                    e[0] == level
                    && e[1] == focusType
                    && e[2] == addType
                    /* 问题2  这里的if 是否有优雅一点的写法呢? */
                ) {
                    id = e[3];
                    /* 问题3  为什么我这里 return e[3]; 不会中断 forEach呢? */
                }
            });
            return id;
        }
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!