首页 > 解决方案 > 仅当过滤器返回布尔值 true 时才使用回调

问题描述

使用带有以下代码的过滤器功能:

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);

理想情况下,我会留下一个变量来说明值是真还是假;

再次感谢。

标签: javascriptjquery

解决方案


if(Array.isArray(gp[0].round[0].activeTabs) && gp[0].round[0].activeTabs.length > 0)
    $fn_rebuildTabs(gp[0].round[0].activeTabs[0]);

看起来很简单,如果检查就足够了


推荐阅读