javascript - 仅当过滤器返回布尔值 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);
理想情况下,我会留下一个变量来说明值是真还是假;
再次感谢。
解决方案
if(Array.isArray(gp[0].round[0].activeTabs) && gp[0].round[0].activeTabs.length > 0)
$fn_rebuildTabs(gp[0].round[0].activeTabs[0]);
看起来很简单,如果检查就足够了
推荐阅读
- autocomplete - 自动完成和功能帮助在 Google App Script 新编辑器中相互重叠
- vue.js - 页面刷新时未加载与 Nuxt/Vue2/Axios 地图一起使用的传单
- visual-studio - “系统找不到指定的文件”的解决方法——首次启动Visual Studio
- java - 使用矩阵求幂查找(线性)递归关系中的第 n 项
- python - Lisp 和 clojure 代码在 Google KickStart 比赛重新输入问题上失败
- javascript - 挂载时计算父组件中多个子 React 组件的值的总和
- python - 当图层为 MarkerCluster 时,叶搜索插件返回“找不到位置”
- python - Python 进程(活动监视器)不会停止
- html - 如何在选择选项中添加字体真棒图标?
- reactjs - 如何在反应打字稿中使用 getInitialProps 和 NextPageContext 在参数中声明两个“res”?