Javascript 如何使用Ramda.js映射对象值并只获取第一个元素?
我有这样的意见:Javascript 如何使用Ramda.js映射对象值并只获取第一个元素?,javascript,ramda.js,Javascript,Ramda.js,我有这样的意见: { a: [obj1, obj2, obj3...], b: [obj1, obj2, obj3...], c: [obj1, obj2, obj3...] } 我希望有那个输出(每个键只有数组中的第一个对象) 我想用电脑做这件事 (由于未定义obj1、obj2和obj3,所以这个精确的代码不起作用)最简单的答案就是map(head,obj),或者如果您想要一个可重用的函数,map(head) 您可以在上看到这一点。注意,由于未使用键,您可以将其简化为R.map(
{
a: [obj1, obj2, obj3...],
b: [obj1, obj2, obj3...],
c: [obj1, obj2, obj3...]
}
我希望有那个输出(每个键只有数组中的第一个对象)
我想用电脑做这件事
(由于未定义
obj1
、obj2
和obj3
,所以这个精确的代码不起作用)最简单的答案就是map(head,obj)
,或者如果您想要一个可重用的函数,map(head)
您可以在上看到这一点。注意,由于未使用
键
,您可以将其简化为R.map(value=>value[0],data)
。(Ramda将对象视为知道如何映射的函子。)但是Ramda的head
本质上是xs=>xs[0]
,所以这也可以写成R.map(R.head,data)
,我们得出了我的解决方案。是的,这更好!更简单更优雅!我试着用head,但之前不是完全正确的方式。
{
a: [obj1],
b: [obj1],
c: [obj1]
}
const data = {
a: [obj1, obj2, obj3],
b: [obj1, obj2, obj3],
b: [obj1, obj2, obj3]
}
const updatedData = R.mapObjIndexed( value => ([value[0]]), data)