2011-06-13 2 views
3

jQuery에서 셀렉터가 반환하는 값에 foldl을 적용하는 방법은 무엇입니까?

일부 HTML 요소가 있다고 가정 해보십시오.

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

대상을 통해 선택하는 내용 :

$('div').text(); 

요소에 대해 "foldl"연산을 수행 할 수 있습니다 (반복, 결과 누적). newline을 사용하여 그것들을 합치는 예?

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

업데이트 태그 자바 스크립트, 함수 프로그래밍 등을 포함하는 접는. –

답변

5

, 자바 스크립트의 Array.reduce() (을위한 foldl) 및 Array.reduceRight() (foldr 용) 함수는 배열 폴딩을 제공합니다.

그래서 특정 작업이된다 : 자바 스크립트 지원의 모든 구현은 줄이고 reduceRight, 그래서 필요한 경우이 example implementation를 참조

var result = $.makeArray($('div')).reduce(function(prev,curr){ 
     return prev + '\n' + $(curr).text() 
}); 

참고.

업데이트 : jQuery는 $ (selector)에 대한 실제 배열을 반환하지 않으므로 일부 플랫폼에서는 jQuery의 "배열 형"컬렉션에서 reduce 및 reduceRight를 지원하지 않으므로 $ .makeArray (). 캐치를 위해 @royas에게 감사드립니다.

+0

$ ('div')를 $ .makeArray ($ div)로 배열로 변환해야했습니다. 줄이다... – royas

1

나는 무엇을 foldl 여기하지만

당신이 반복 방법 및 CONCATENATE 확실하지 않다 : folding에 Wikipedia 기사에 따르면

var newArray = []; 
//'div' is an outer container of your inner divs 
$('div').each(function(index, Element) { 
    newArray.push($(this).text()); 
}); 

$('body').append(newArray.join('')); 
+1

여기에 구문 오류가 있습니다 ...'}'')';);' – Hogan

0

나는, 나는 당신이 "foldl"무슨 뜻인지 이해가 확실하지 생각 ... 을하지만이 시도 :

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

가능한 장소 : http://api.jquery.com/each/

관련 문제