HTML要素がいくつかあるとします。
<div>First</div>
<div>Second</div>
<div>Third</div>
私が選択するコンテンツは次のとおりです。
$('div').text();
たとえば、改行を使用して要素を結合するために、要素に対して「foldl」操作(反復、結果の累積)を行うにはどうすればよいですか?
$('div').text().foldl('', function(){ ... join_or_whatever ... })
HTML要素がいくつかあるとします。
<div>First</div>
<div>Second</div>
<div>Third</div>
私が選択するコンテンツは次のとおりです。
$('div').text();
たとえば、改行を使用して要素を結合するために、要素に対して「foldl」操作(反復、結果の累積)を行うにはどうすればよいですか?
$('div').text().foldl('', function(){ ... join_or_whatever ... })
折りたたみに関するウィキペディアの記事によると、JavaScriptのArray.reduce()(foldlの場合)およびArray.reduceRight()(foldrの場合)関数は配列の折りたたみを提供します。
したがって、特定のタスクは次のようになります。
var result = $.makeArray($('div')).reduce(function(prev,curr){
return prev + '\n' + $(curr).text()
});
JavaScriptのすべての実装がreduceおよびreduceRightをサポートしているわけではないことに注意してください。したがって、必要に応じてこの実装例を参照してください。
更新:jQueryは$(selector)の真の配列を返さず、一部のプラットフォームはjQueryの「配列のような」コレクションでreduceおよびreduceRightをサポートしていないため、以下に示すように$ .makeArray()を使用するように回答を更新しました。キャッチしてくれた@royasに感謝します。
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(''));
「foldl」の意味は理解できたと思いますが、よくわかりません...しかし、これを試してみてください。
var finalStr = "";
$('div').each(function(index) {
finalStr += $(this).text() + "<br>";
});