3

HTML要素がいくつかあるとします。

<div>First</div>
<div>Second</div>
<div>Third</div>

私が選択するコンテンツは次のとおりです。

$('div').text();

たとえば、改行を使用して要素を結合するために、要素に対して「foldl」操作(反復、結果の累積)を行うにはどうすればよいですか?

$('div').text().foldl('', function(){ ... join_or_whatever ... })
4

3 に答える 3

5

折りたたみに関するウィキペディアの記事によると、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に感謝します。

于 2011-06-13T17:45:52.560 に答える
1

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(''));
于 2011-06-13T17:41:55.440 に答える
0

「foldl」の意味は理解できたと思いますが、よくわかりません...しかし、これを試してみてください。

var finalStr = "";
$('div').each(function(index) {
   finalStr += $(this).text() + "<br>";
});

http://api.jquery.com/each/で入手可能

于 2011-06-13T17:53:34.050 に答える