为了账号安全,请及时绑定邮箱和手机立即绑定

在Array.prototype.reduce中使用不纯的还原剂是否安全?

在Array.prototype.reduce中使用不纯的还原剂是否安全?

慕码人2483693 2021-04-28 13:26:31
我想知道array.prototype.reduce在JavaScript中使用不纯的还原剂是否安全。例子:假设我有以下数组:[{ id: 0, value: 6 }, { id: 1, value: 25 }]如果我想将其转换为映射,则ID成为键,值变为值。我在这里有两个选择:使用纯异径管和不纯异径管。// pure optionconst data = [{ id: 0, value: 6 }, { id: 1, value: 25 }];const object = data.reduce((accum, { id, value }) =>  Object.assign({}, accum, { [id]: value }),   {});const map = new Map(Object.entries(object));// impure optionconst data = [{ id: 0, value: 6 }, { id: 1, value: 25 }];const map = data.reduce(  (accum, { id, value }) => accum.set(id, value),  new Map());尽管不纯选项的速度更快,样板代码更少,但我不确定它是否安全或是否可以提供比赛条件。
查看完整描述

1 回答

?
喵喵时光机

TA贡献1846条经验 获得超7个赞

您想得太多了。

没关系,我们很多人(包括我本人)到那里来。但是问自己一个问题:从使用地图的实体的角度来看,您能分辨出区别吗?答:不可以。实际上,足够聪明的编译器会将前者变成后者。虽然我通常会在编写代码时尽量避免成为人工编译器,但在这种情况下,不纯净的版本会变得更短更清晰更快。

Javascript中的本地状态很好

这并不是说一切正常,我不会在化简器(或与此相关的任何其他函数)中改变外部数据结构,而是对不会“泄漏”到reduce调用之外并且仅针对其实例化的变量进行突变。以这种方式构造的目的很好。



查看完整回答
反对 回复 2021-05-13
  • 1 回答
  • 0 关注
  • 131 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信