在我们当前的项目中,我们遇到了一些反复出现的问题,人们使用'asMutable'来实现无缝不可变,而实际上并不是必需的.这导致'search project for string"asMutable"'成为每个pull请求的一部分.为了加快速度,我们想在我们的队列中添加一条规则警告.但我还没弄明白怎么做.
对我来说似乎是最好的解决方案,虽然我对建议持开放态度,这是一条允许我指定禁止的函数名称的规则.ESlint或插件是否具有这种功能?
我看起来有点自己编写,但我被AST和创建第一条规则的启动困难所吓倒.如果我找不到更好的答案,我可能会冒险尝试,是的,我们在PR中得到足够的保证.这似乎比我更聪明的人已经解决了,所以我宁愿跟随他们的脚步然后建立我自己的脚步.
我想映射一个对象数组以输出按特定对象键分组的不可变映射。
array looks like
[
{id:1, time:19072016},
{id:2, time:19072016},
{id:3, time:19072015},
]
output im seeking is
[
byId: {
1:{id:1, time:19072016},
2:{id:2, time:19072016},
3:{id:3, time:19072015},
},
byTime: {
19072016:[1,2],
19072015:[3],
}
]
Run Code Online (Sandbox Code Playgroud)
使用immutablejs或Seamless-immutable最有效的方法是什么?
目前我正在使用reduce作为:
array.reduce( (final,row) =>final.setIn(['byId',row.id],row) ,
Immutable.Map({byId:{},byTime:{}});
Run Code Online (Sandbox Code Playgroud)
这个输出byIds是我想要的,但是问题byTime
是我需要合并而不是覆盖。
我尝试了无缝不可变:
Seamless(arr).toObject(i=>[i.id,i]) //this will return byId as i want it
Seamless(arr).toObject(i=>[i.time,[i.id]]) //this will not merge [1,2] :(
Run Code Online (Sandbox Code Playgroud)