- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用键作为引用来用另一个对象填充一个对象。
// Object with actual information
{
'key1.key2.key3': {},
'key1.key4': {},
}
// Desired Shape
{
'key1': {
'key2': {
'key3': {
},
},
'key4': {
},
}
使用Ramda库这应该是小菜一碟,同时,我成功地用所需的形状填充了累加器,我遇到了这不是我期望的行为方式。
const fillShapeWithParsed = shape =>
R.pipe(
R.toPairs,
R.reduce(
(accumulator, [shapeKey, complexValue]) => {
return R.over(
R.lensPath(shapeKey.split('.').filter(key => key !== '')),
R.merge(complexValue),
accumulator
);
},
shape
)
);
上面代码的输出是:如果带有 info 的对象中引用键的值是一个对象数组,则累加器接收转换为以索引为键的嵌套对象的值。
// Object with information
{
'key1.key2.key3': [
{},
{},
{},
],
}
// Desired Shape
{
'key1': {
'key2': {
'key3': {
'0': {},
'1': {},
'2': {},
},
},
},
}
此时我知道这是由 R.merge() 完成的功能...
所以我将其更改为 R.clone() ,它向我抛出了一个关于参数不是函数的错误。
除此之外,现在合并函数已被弃用,我想将其替换为可以帮助我不转换complexValue的东西
最佳答案
其实你离这个目标并不遥远。我认为您缺少的只是检查 complexValue
是否是一个数组。如果是,则按原样返回它 (R.always
),否则将其与 accumulator
合并。
此外,我已将 R.pipe
直接分配给 fillShapeWithParsed
const input = {
'key1.key2.key3': {},
'key1.key4': {},
'key1.key4.key5': [
{},
{},
{},
],
};
const fillShapeWithParsed = R.pipe(
R.toPairs,
R.reduce(
(accumulator, [shapeKey, complexValue]) => {
return R.over(
R.lensPath(shapeKey.split('.').filter(key => key !== '')),
R.is(Array, complexValue) ? R.always(complexValue) : R.merge(complexValue),
accumulator
);
}, {})
);
console.log(
fillShapeWithParsed(input)
);
<script src="https://cdnjs.cloudflare.com/ajax/libs/ramda/0.26.1/ramda.min.js"></script>
关于Javascript - 为什么 Ramda over 函数在这里不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53565693/
今天有小伙伴给我留言问到,try{...}catch(){...}是什么意思?它用来干什么? 简单的说 他们是用来捕获异常的 下面我们通过一个例子来详细讲解下
我正在努力提高网站的可访问性,但我不知道如何在页脚中标记社交媒体链接列表。这些链接指向我在 facecook、twitter 等上的帐户。我不想用 role="navigation" 标记这些链接,因
说现在是 6 点,我有一个 Timer 并在 10 点安排了一个 TimerTask。之后,System DateTime 被其他服务(例如 ntp)调整为 9 点钟。我仍然希望我的 TimerTas
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我就废话不多说了,大家还是直接看代码吧~ ? 1
Maven系列1 1.什么是Maven? Maven是一个项目管理工具,它包含了一个对象模型。一组标准集合,一个依赖管理系统。和用来运行定义在生命周期阶段中插件目标和逻辑。 核心功能 Mav
我是一名优秀的程序员,十分优秀!