我有輸入這樣的:如何使用Ramda.js映射對象值並只取第一個元素?
{
a: [obj1, obj2, obj3...],
b: [obj1, obj2, obj3...],
c: [obj1, obj2, obj3...]
}
我想有輸出(只從陣列的第一目的爲每個鍵)
{
a: [obj1],
b: [obj1],
c: [obj1]
}
我想這樣做使用ramda.js
我有輸入這樣的:如何使用Ramda.js映射對象值並只取第一個元素?
{
a: [obj1, obj2, obj3...],
b: [obj1, obj2, obj3...],
c: [obj1, obj2, obj3...]
}
我想有輸出(只從陣列的第一目的爲每個鍵)
{
a: [obj1],
b: [obj1],
c: [obj1]
}
我想這樣做使用ramda.js
最簡單的答案只是map(head, obj)
,或者如果你想要一個可重用的函數,map(head)
。
您可以在Ramda REPL中看到此操作。
const data = {
a: [obj1, obj2, obj3],
b: [obj1, obj2, obj3],
b: [obj1, obj2, obj3]
}
const updatedData = R.mapObjIndexed(value => ([value[0]]), data)
(由於obj1
,obj2
和obj3
未定義),此確切代碼將不起作用)
它的工作!謝謝! –
請注意,由於未使用'key',因此可以將此簡化爲'R.map(value => value [0],data)'。 (Ramda將對象視爲它知道如何映射的函子)。但是,Ramda的'head'基本上是'xs => xs [0]',所以這也可以寫成'R.map(R.head,data)' ,我們到達了我的解決方案。 –
是的,那太好了!更簡單,更優雅!我正在嘗試使用頭部,但之前並不完全正確。 –