首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使函数处理Javascript中的另一个函数

使函数处理Javascript中的另一个函数
EN

Stack Overflow用户
提问于 2015-05-12 22:49:26
回答 2查看 127关注 0票数 0

我有两个函数来过滤一个字符串数组。第一个函数根据长度过滤它,另一个函数根据它包含的字符过滤它。

字符串数组将在页面加载时加载。

如何使这个函数一起工作,所以当我根据数组所包含的字符过滤数组,并且我有适当的字符串时,稍后我应该按min值,它应该显示前一个筛选器中剩下的字符串。我不想再加载数组了。

这里我有第一个函数http://jsfiddle.net/arunpjohny/03avr1vh/2/

如何添加另一个,并使他们一起工作。

Myscript:

代码语言:javascript
复制
function filter() {
    var a = document.getElementById('A').checked,
        e = document.getElementById('E').checked,
        o = document.getElementById('O').checked,
        result2; //make a copy

    result2 = animals.filter(function (value) {
        value = value.toLowerCase();
        return (!a || value.indexOf('a') == -1) && (!e || value.indexOf('e') == -1) && (!o || value.indexOf('o') == -1);
    })
    document.getElementById("demo").innerHTML = result2;
}
filter();
EN

回答 2

Stack Overflow用户

发布于 2015-05-12 23:12:05

您可以在字母过滤器之后链接长度过滤器:

代码语言:javascript
复制
result2 = animals.filter(function (value) {
    // letter filter
}).filter(function (value) {
    // length filter
});

快速取样

票数 1
EN

Stack Overflow用户

发布于 2015-05-12 23:21:36

或者您可以使用一些函数式编程,对两个函数做一个咖喱,如下所示:

代码语言:javascript
复制
function compose(f1, f2)
{
   return function(val) {
      return f1(val)&&f2(val);
   }
}
// in this case the .filter traverses the array only once, 
// instead of twice, i.e once for each subfilter function
result2 = animals.filter(compose(letterFilter, lengthFilter));

小提琴手例子

UPDATE如果理解正确,并且需要在以后再进行筛选(由另一个过滤器进行),则需要存储来自前一个过滤器的中间结果,并将其用作其他过滤器的输入,或者只需使用组合过滤器再次过滤整个数组(如本例中所示)。

最好的方法取决于数组的大小以及您希望实现的代码模块化和独立性。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30202746

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档