發(fā)布于:2021-01-16 14:12:38
0
96
0
每個(gè)專門(mén)研究任何編程語(yǔ)言的開(kāi)發(fā)人員都會(huì)告訴您,有一個(gè)強(qiáng)大的工具提供了該語(yǔ)言,他們很少使用并且希望他們了解更多。對(duì)我來(lái)說(shuō),這是Array.prototype.reduce。我很喜歡其他Array方法,例如map,filter和find,但是reduce我知道這種方法功能強(qiáng)大,但從未真正使用過(guò)。
直到我重構(gòu)了一些Firefox DevTools Debugger代碼后,我才發(fā)現(xiàn)了一個(gè)很好的用例reduce-我計(jì)劃在將來(lái)使用它。
像forEach和這樣的方法map都是為了避免產(chǎn)生副作用而創(chuàng)建的,reduce也不例外。但是,在這種情況下,reduce可以返回Object以外的值A(chǔ)rray。以這種情況為例:
// 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對(duì)象,并與每個(gè)返回單個(gè)對(duì)象文字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" } }
請(qǐng)注意{},,這是的最后一個(gè)參數(shù)reduce,是要返回的開(kāi)始/默認(rèn)對(duì)象。如果數(shù)組中沒(méi)有項(xiàng)目,{}則將返回。還應(yīng)該意識(shí)到,數(shù)組方法返回的是對(duì)象常量而不是修改后的數(shù)組!
瘋狂的是我沒(méi)有使用reduce更多的東西,但這只是我們行業(yè)中的生活-我們都有一些API,我們只是很少使用。您經(jīng)常看到但不使用JavaScript的哪些功能?
作者介紹
熱門(mén)博客推薦