發(fā)布于:2021-01-16 14:12:38
0
96
0
每個專門研究任何編程語言的開發(fā)人員都會告訴您,有一個強大的工具提供了該語言,他們很少使用并且希望他們了解更多。對我來說,這是Array.prototype.reduce。我很喜歡其他Array方法,例如map,filter和find,但是reduce我知道這種方法功能強大,但從未真正使用過。
直到我重構(gòu)了一些Firefox DevTools Debugger代碼后,我才發(fā)現(xiàn)了一個很好的用例reduce-我計劃在將來使用它。
像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對象,并與每個返回單個對象文字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" } }
請注意{},,這是的最后一個參數(shù)reduce,是要返回的開始/默認(rèn)對象。如果數(shù)組中沒有項目,{}則將返回。還應(yīng)該意識到,數(shù)組方法返回的是對象常量而不是修改后的數(shù)組!
瘋狂的是我沒有使用reduce更多的東西,但這只是我們行業(yè)中的生活-我們都有一些API,我們只是很少使用。您經(jīng)常看到但不使用JavaScript的哪些功能?