发布于:2021-01-16 14:12:38
0
85
0
每个专门研究任何编程语言的开发人员都会告诉您,有一个强大的工具提供了该语言,他们很少使用并且希望他们了解更多。对我来说,这是Array.prototype.reduce。我很喜欢其他Array方法,例如map,filter和find,但是reduce我知道这种方法功能强大,但从未真正使用过。
直到我重构了一些Firefox DevTools Debugger代码后,我才发现了一个很好的用例reduce-我计划在将来使用它。
像forEach和这样的方法map都是为了避免产生副作用而创建的,reduce也不例外。但是,在这种情况下,reduce可以返回Object以外的值Array。以这种情况为例:
// Samples sources const sources = [ { id: "server1.conn13.child1/39", url: "https://davidwalsh.name/" }, { id: "server1.conn13.child1/37", url: "https://davidwalsh.name/util.js" } ]; // Return an object of sources with the keys being "id" const sourcesMap = sources.reduce((map, source) => { map[source.id] = source return map; }, {});
在上面的例子中,我们采取的阵列Source对象,并与每个返回单个对象文字Source的id作为键:
{ "server1.conn13.child1/39": { "id": "server1.conn13.child1/39", "url": "https://davidwalsh.name/" }, "server1.conn13.child1/37": { "id": "server1.conn13.child1/37", "url": "https://davidwalsh.name/util.js" } }
请注意{},,这是的最后一个参数reduce,是要返回的开始/默认对象。如果数组中没有项目,{}则将返回。还应该意识到,数组方法返回的是对象常量而不是修改后的数组!
疯狂的是我没有使用reduce更多的东西,但这只是我们行业中的生活-我们都有一些API,我们只是很少使用。您经常看到但不使用JavaScript的哪些功能?
作者介绍