gpt4 book ai didi

javascript - 在函数中间注入(inject)值

转载 作者:行者123 更新时间:2023-12-04 02:19:24 26 4
gpt4 key购买 nike

如果我想定义一个函数来过滤匹配给定值的集合,我可以这样写:

const { filter, equals} = R

const data = [1, 2, 3, 4, 5]

const filterDataFor = x => filter(equals(x), data);

console.log(filterDataFor(2))
<script src="https://cdnjs.cloudflare.com/ajax/libs/ramda/0.26.1/ramda.js"></script>

我想我也可以这样写:

const { filter, equals, __ } = R

const data = [1, 2, 3, 4, 5]

const filterDataFor = filter(equals(__), data)

console.log(filterDataFor(2))
<script src="https://cdnjs.cloudflare.com/ajax/libs/ramda/0.26.1/ramda.js"></script>

但显然不是;在第二个示例中,filterDataFor 不是函数。有人可以指出我哪里出了问题吗?

最佳答案

你可以做的是在 filter 中放置一个简单的占位符而不是 equals(__),然后简单地 compose 它们和 equals :

const { filter, equals, __, compose } = R
const data = [1, 2, 3, 4, 5]
const filterDataFor = compose(filter(__, data), equals);

console.log(filterDataFor(2))
<script src="https://cdnjs.cloudflare.com/ajax/libs/ramda/0.26.1/ramda.js"></script>

由于 compose 从右到左组合函数,当您调用 filterDataFor(2) 时,它将首先计算 equals(2) 然后结果函数将被应用而不是占位符,本质上导致 filter(equals(2), data)

关于javascript - 在函数中间注入(inject)值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58745131/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com