Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在jQuery中对选择器返回的值进行foldl?_Javascript_Jquery_Functional Programming_Fold - Fatal编程技术网

Javascript 如何在jQuery中对选择器返回的值进行foldl?

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 =

假设我有一些HTML元素:

<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>";
});