如何在对象的道具上使用方法,然后是 return 对象
How to use a method on a prop of and object, then return object
我正在尝试使用 Ramda 重现 appendSearchParam 函数,即应用对象的 prop 方法,然后 returning 所述对象。
我最好的镜头是提供的 aSP 函数,但是这个函数没有 return url 对象,我严重怀疑我的 "nthArg" 是不是一个很好的实践。然后我尝试将 R.tap 与 aSP 一起使用,但没有结果。
import {
URL
} from 'url'
import R from 'ramda'
const u = new URL('http://www.google.com')
const appendSearchParam = (url, key, value) => {
url.searchParams.append(key, value)
return url
}
const aSP = R.converge(
R.invoker(2, 'append'),
[
R.nthArg(1),
R.nthArg(2),
R.prop('searchParams')
]
)
我不会说使用 nthArg
是不好的做法。但是我不确定索引是否正确。我认为应该是 nthArg(0)
和 nthArg(1)
。
你可能想用 useWith
代替,在这种情况下你不需要使用 nthArg
但 identity
到 return key
和 value
分别。
const asp = useWith(
invoker(2, 'append'), [
identity, // return key
identity, // return value
prop('searchParams')]); // get 'searchParams' from url
问题不在于函数,而在于您正在与之交互的 API。如您所见,append 将 return undefined
但仍会附加您的查询:
const url = new URL('http://foo.bar');
console.log(url.searchParams.append('x', 42));
console.log(url);
我不确定无点函数在这里是否有意义,因为您需要引用 url
才能 return 它。
我可能会这样做:
const asp = curry((key, value, url) =>
url.searchParams.append(key, value) || url);
我正在尝试使用 Ramda 重现 appendSearchParam 函数,即应用对象的 prop 方法,然后 returning 所述对象。
我最好的镜头是提供的 aSP 函数,但是这个函数没有 return url 对象,我严重怀疑我的 "nthArg" 是不是一个很好的实践。然后我尝试将 R.tap 与 aSP 一起使用,但没有结果。
import {
URL
} from 'url'
import R from 'ramda'
const u = new URL('http://www.google.com')
const appendSearchParam = (url, key, value) => {
url.searchParams.append(key, value)
return url
}
const aSP = R.converge(
R.invoker(2, 'append'),
[
R.nthArg(1),
R.nthArg(2),
R.prop('searchParams')
]
)
我不会说使用 nthArg
是不好的做法。但是我不确定索引是否正确。我认为应该是 nthArg(0)
和 nthArg(1)
。
你可能想用 useWith
代替,在这种情况下你不需要使用 nthArg
但 identity
到 return key
和 value
分别。
const asp = useWith(
invoker(2, 'append'), [
identity, // return key
identity, // return value
prop('searchParams')]); // get 'searchParams' from url
问题不在于函数,而在于您正在与之交互的 API。如您所见,append 将 return undefined
但仍会附加您的查询:
const url = new URL('http://foo.bar');
console.log(url.searchParams.append('x', 42));
console.log(url);
我不确定无点函数在这里是否有意义,因为您需要引用 url
才能 return 它。
我可能会这样做:
const asp = curry((key, value, url) =>
url.searchParams.append(key, value) || url);