微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在它之外使用 for 循环值?

如何解决如何在它之外使用 for 循环值?

我在函数内部使用了 forEach 循环,但我想对调用函数用户使用名为 seenelesadele 的值,我要他输入规则。 这可能吗?

这是代码...

**

let seen;
let sad;
let result;


 onlyIf = (test,then) => {if(test)  then()};

 function dalla(seen,sad,rule){

   seen.forEach(seenFunc);
   function seenFunc(seenele){

     sad.forEach(mainFunc);
     function mainFunc(sadele){

         onlyIf(seenele + sadele == 7,() => console.log(seenele,sadele))
     }
     
   }
 }


 dalla([1,2,4],[2,3,5,6])

**

解决方法

当然,只需将谓词作为参数传递即可:

function joinBy(a,b,rule) {
    let result = [];

    a.forEach(
        itemA => b.forEach(
            itemB => {
                if (rule(itemA,itemB))
                    result.push([itemA,itemB])
            }
        )
    );

    return result;
}


console.log(
    joinBy(
        [1,2,4],[2,3,5,6],(x,y) => x + y === 7
    )
)

进一步研究的更高级示例:

let pairs = (a,b) => a.flatMap(x => b.map(y => [x,y]));

let splat = f => x => f(...x);

let joinBy = (a,rule) => pairs(a,b).filter(splat(rule));

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。