Rob*_*loi 3 javascript jquery functional-programming fold
说我有一些HTML元素:
<div>First</div>
<div>Second</div>
<div>Third</div>
我选择的内容是:
$('div').text();
如何对元素进行"foldl"操作(迭代,累积结果),例如使用换行符连接它们?
$('div').text().foldl('', function(){ ... join_or_whatever ... })
根据Wikipedia关于折叠的文章,JavaScript的Array.reduce()(用于foldl)和Array.reduceRight()(用于foldr)函数提供了数组折叠.
所以你的具体任务变成:
var result = $.makeArray($('div')).reduce(function(prev,curr){ 
        return prev + '\n' + $(curr).text() 
});
请注意,并非所有JavaScript实现都支持reduce和reduceRight,因此如果需要,请参阅此示例实现.
更新:由于jQuery没有为$(选择器)返回一个真正的数组,并且某些平台不支持jQuery的"类似数组"集合上的reduce和reduceRight,我已经更新了使用$ .makeArray()的答案,如下所示.感谢@royas的捕获.