說我有一些HTML元素:如何使jQuery中的選擇器返回的值摺疊?
<div>First</div>
<div>Second</div>
<div>Third</div>
,其內容我通過一個選擇:
$('div').text();
我怎樣才能讓(迭代,積累的結果)的元素「與foldl」操作,例如加入他們使用換行符?
$('div').text().foldl('', function(){ ... join_or_whatever ... })
說我有一些HTML元素:如何使jQuery中的選擇器返回的值摺疊?
<div>First</div>
<div>Second</div>
<div>Third</div>
,其內容我通過一個選擇:
$('div').text();
我怎樣才能讓(迭代,積累的結果)的元素「與foldl」操作,例如加入他們使用換行符?
$('div').text().foldl('', function(){ ... join_or_whatever ... })
據對folding維基百科的文章,JavaScript的Array.reduce()(爲foldl)和Array.reduceRight()(用於foldr)函數提供數組摺疊。
所以您的具體任務就變成了:
var result = $.makeArray($('div')).reduce(function(prev,curr){
return prev + '\n' + $(curr).text()
});
請注意,並非所有的JavaScript支持實現減少和reduceRight,所以看到這個example implementation如果需要的話。
更新:由於jQuery沒有爲$(selector)返回一個真正的數組,並且有些平臺不支持jQuery的「類似數組」的reduce和reduceRight,我已經更新了使用$ .makeArray )如下所示。感謝@royas的收穫。
我不得不使用$ .makeArray($('div'))將$('div')轉換爲數組。減少... – royas 2013-06-19 13:51:14
我不知道什麼是與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(''));
你在這裏有一個語法錯誤......'}'所在的行需要'});' – Hogan 2011-06-13 18:45:10
我想我明白你的意思是「與foldl」,不知道... 但試試這個:
var finalStr = "";
$('div').each(function(index) {
finalStr += $(this).text() + "<br>";
});
更新標籤包含JavaScript,功能編程和摺疊。 – 2011-06-13 17:58:59