仅当筛选器返回布尔值 true 时才使用回调

Using a callback only when a filter returns boolean value true

提问人:S.S 提问时间:5/19/2021 最后编辑:S.S 更新时间:5/19/2021 访问量:163

问:

将 filter 函数与以下代码一起使用:

tabs = ['GP_0_Result_', 'GP_Scores', 'LGP_Scores'];
        
gp = [];
gp[0] = new Object();
gp[0].round = [];
gp[0].round[0] = new Object();      // gp[0].round[0].activeTabs = ['GP_0_Result_', 'SGP_Scores', 'BBC'];
gp[0].round[0].activeTabs = [];
        
$fn_removeTabs = function($fn_rebuildTabs){
    gp[0].round[0].activeTabs = gp[0].round[0].activeTabs.filter(function(val, i){
        a = (tabs.indexOf(val.substring(0,16)) == -1 ? true : false);
        return a;
    });
    
    // Only call ** $fn_rebuildTabs(gp[0].round[0].activeTabs[0]); ** if true is returned from the filter;
    $fn_rebuildTabs(gp[0].round[0].activeTabs[0]);
    return gp[0].round[0].activeTabs;
};
        
$fn_rebuildTabs = function(a0){
    //alert(">>>> "+gp[0].round[0].activeTabs+" | "+a0+" **** ");
    a0 = gp[0].round[0].activeTabs.length;                          
    gp[0].round[0].activeTabs.push(gp[0].round[0].activeTabs[0]);
};

我只想在从过滤器函数返回真值时使用回调。

任何帮助或建议将不胜感激。

** 是的,这是我想知道过滤功能完成后结果的行:

a = (tabs.indexOf(val.substring(0,16)) == -1 ? true : false);

理想情况下,我将留下一个变量,说明值 true 或 false;

再次感谢。

JavaScript jQuery

评论

0赞 isherwood 5/19/2021
检查里面是否有任何东西不是在语义上更正确吗?为什么要依赖辅助逻辑?activeTabs

答:

0赞 gandharv garg 5/19/2021 #1
if(Array.isArray(gp[0].round[0].activeTabs) && gp[0].round[0].activeTabs.length > 0)
    $fn_rebuildTabs(gp[0].round[0].activeTabs[0]);

看起来一个简单的检查就足够了