【问题标题】:I have a collection of items. Based on the two data points, I need to query that items我有一个项目集合。基于这两个数据点,我需要查询那些项目
【发布时间】:2019-09-12 07:55:46
【问题描述】:

我有一些物品。基于这两个数据点,我需要过滤掉那些项目。举个例子:我有一个动作对象的集合 [{name: Detail}, {name: Spec}...] 我有两个数据点,比如我是类别“G”,在页面“A”中只使用 Detail动作,但我是“G”类别,但在“B”页面中仅使用规范动作等。对于此问题,将其扩展到 100 个动作并基于 10 个类别和页面的最佳 OOP 方法是什么?我试图用工厂模式解决,但没有成功。

【问题讨论】:

    标签: javascript typescript


    【解决方案1】:

    最简单的解决方案是为此页面创建页面映射和允许的操作。 示例:

    const actions = [{name: 'Detail'}, {name: 'Spec'}];
    
    const pages = [
       { 
         name: 'A',
         allowedActions: [{name: 'Detail'}]
       },
       { 
         name: 'B',
         allowedActions: [{name: 'Spec'}]
       }
    ]
    
    const getAllowedActions = pageName => {
      return pages.find(page => page.name == pageName).allowedActions;
    }
    
    console.log(getAllowedActions('A'));
    

    输出:

    [{名称:'详细信息'}]

    【讨论】:

    • 感谢您的回答,但它缺少类别信息,操作可能会因类别而异。就像,每个页面有 n 个类别。
    • 只需为类别和操作再添加一个映射。
    • 你可以这样做,但这意味着很多代码重复,我拥有的动作对象有 15 个属性,我认为有更好的方法来解决这个问题
    • 代码重复是您的案例中的一个小问题。我建议你做简单的映射,一切都会好的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-19
    • 2013-07-13
    • 1970-01-01
    相关资源
    最近更新 更多