使用数组化简

发布于:2021-01-16 14:12:38

0

85

0

数组 JavaScript

每个专门研究任何编程语言的开发人员都会告诉您,有一个强大的工具提供了该语言,他们很少使用并且希望他们了解更多。对我来说,这是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的哪些功能?