Javascript 如何在jQuery中对选择器返回的值进行foldl?
假设我有一些HTML元素:Javascript 如何在jQuery中对选择器返回的值进行foldl?,javascript,jquery,functional-programming,fold,Javascript,Jquery,Functional Programming,Fold,假设我有一些HTML元素: <div>First</div> <div>Second</div> <div>Third</div> 如何对元素进行“foldl”操作(迭代、累积结果),例如使用换行符连接元素 $('div').text().foldl('', function(){ ... join_or_whatever ... }) 我不确定foldl是什么但是 以下是迭代和连接的方式: var newArray =
<div>First</div>
<div>Second</div>
<div>Third</div>
如何对元素进行“foldl”操作(迭代、累积结果),例如使用换行符连接元素
$('div').text().foldl('', function(){ ... join_or_whatever ... })
我不确定foldl是什么但是 以下是迭代和连接的方式:
var newArray = [];
//'div' is an outer container of your inner divs
$('div').each(function(index, Element) {
newArray.push($(this).text());
});
$('body').append(newArray.join(''));
根据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的帮助。我想我理解你所说的“foldl”是什么意思,不确定。。。 但是试试这个:
var finalStr = "";
$('div').each(function(index) {
finalStr += $(this).text() + "<br>";
});
var finalStr=”“;
$('div')。每个(函数(索引){
finalStr+=$(this).text()+“
”;
});
位于:更新了标签,包括javascript、函数编程和折叠。您在此处遇到语法错误。。。带有
}
的行需要是})代码>
var finalStr = "";
$('div').each(function(index) {
finalStr += $(this).text() + "<br>";
});