作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试将以下输入(JSON 数组)转换为如下所示的预期输出。 indexCols 也是
var objects = ['{"ticker":"MSFT", "key": 2, "PX_LAST":100}',
'{"ticker":"AAPL", "key": 3, "PX_LAST":100}',
'{"ticker":"GOOG", "key": 4, "PX_LAST":100}']
/* Expected output
[[id, '{"ticker":"MSFT", "key": 2, "PX_LAST":100}', 'MSFT', 2 ]
[id, '{"ticker":"AAPL", "key": 3, "PX_LAST":100}', 'AAPL', 3 ]
[id, '{"ticker":"GOOG", "key": 4, "PX_LAST":100}', 'GOOG', 4 ]]
*/
var indexCols = ['ticker', 'key']
var transform = function(input, indexCols, id) {
var fn2 = R.compose(R.flip(R.map)(indexCols), R.flip(R.prop), JSON.parse)
var fn3 = R.map(R.compose(R.concat([id]), fn2))
return fn3(objects)
}
transform(objects, indexCols, 100)
/* result : [[100, "MSFT", 2], [100, "AAPL", 3], [100, "GOOG", 4]] */
如您所见,结果数组缺少第二个元素,即 json 字符串。我无法以功能性的方式编织它。
最佳答案
(我认为有一个拼写错误,而不是这个: return fn3(objects) 你可能的意思是这个: return fn3(input) )
var transform = function(input, indexCols, id) {
var fn2 = R.compose(R.flip(R.map)(indexCols), R.flip(R.prop), JSON.parse);
var valueToArray = R.flip(R.append)([]);
var fn3 = R.map(R.compose(R.flatten, R.concat([id]), R.compose(R.ap([R.identity, fn2]), valueToArray)))
return fn3(input)
}
https://codepen.io/anon/pen/Jrzmda
你必须复制你的输入对象(a->[a,a]),然后你可以根据需要对第二个元素进行操作(fn2),只需保持第一个元素不变(身份),并且,在最后,将它们连接在一起。
改进 1:是否已经有 valueToArray ( a->[a] ) 的 Ramda 函数?改进 2:有没有办法连接 id 非嵌套来摆脱 R.flatten?
关于javascript - 卡在 Ramda 组合物上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46855187/
当我在我的 Angular 应用程序中创建一个常量时,我想访问一个 $injectable。 这样的事情可能吗?注入(inject)剂如何申报? myApp.constant('myCon
我正在尝试提取称为tests.stats()的个人功能的输出 我用return语句创建一个函数: return(c(list.test.1, list.test.2 ,list.test.3,
我是一名优秀的程序员,十分优秀!