[英]JavaScript: reduce and map
我試圖理解為什么這個函數的作者會在已經是map調用結果的對象上調用reduce。 這是來自主干應用程序的渲染功能(演示位於http://fire-camp.heroku.com/ )。 變量“ messages”表示用戶輸入到消息傳遞系統中的消息的集合。 作者為什么要調用map,然后減少map的結果,即“數據”。 我不明白reduce如何為數據變量添加任何新內容。 如果您需要更多信息,請與我們聯系。
render: function() {
var data = messages.map(function(message) { return message.get('content') + 'n'});
var result = data.reduce(function(memo,str) { return memo + str }, '');
$("#chatHistory").text(result);
return this;
}
簡短應用的完整源代碼在這里,但我認為您不需要它。 https://github.com/ryandotsmith/fire-camp
正如@Pointy提到的那樣,作者使用reduce
的原因是將數組連接為單個字符串(或將其簡化為字符串)。 正如@Pointy也提到的那樣,在這種情況下使用reduce
的原理不是很好。
給定GitHub上的代碼,有幾種更好的選擇。 考慮到代碼使用Backbone.js,並且messages
變量指向Backbone.Collection
如果它按照以下方式讀取內容,則該代碼將更加清晰:
render: function() {
var result = messages.pluck('content').join('\n')
$("#chatHistory").text(result);
return this;
}
使用reduce
來連接字符串數組是過大的,並且掩蓋了代碼的意圖。 將map
與Backbone.Collection
一起使用只是為了從模型內部提取特定屬性,這在某種程度上也模糊了代碼的意圖。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.