2012-09-04 1 views
3

자바에서 제공되는 구아바가 제공하는 풍부한 데이터 구조로 인해 유연성이 마음에 든다. js 또는 jquery에 "guava-like"라이브러리가 있습니까?? (자바에서 구아바와 같이)

참고 : 폐쇄에 대해 듣고 조금 무거워 보입니다. (또는 실제로 필요한 closure가 무엇입니까?)

참고 2 : "데이터 구조의 풍부한 컬렉션"은 정렬 된 맵과 세트, 멀티 맵 (중복 키 허용) 및 멀티 세트 (여러 항목이 허용 된 세트 - 이상하게 보입니다. ! 실제로 매우 유용) 등

+0

** 자바 스크립트는 자바 **가 아니므로 자바 스크립트에 컬렉션 프레임 워크와 같은 전체 자바/구아바 케이크를 제공하기가 어렵습니다 ... – Xaerxess

답변

6

자바 스크립트 Array들과 Object의 자바 스크립트 자체에 운영을위한 유틸리티를 의미 JS에 대한 "데이터 구조의 풍부한 컬렉션을"로, 그때 Underscore.js 권하고 싶습니다 경우

언더 코어는 유틸리티 벨트 라이브러리 fo r 함수 적 프로그래밍 지원을 많이 제공하는 JavaScript. 등등 기능 바인딩, 자바 스크립트 템플릿, 깊은 평등 테스트, -뿐만 아니라보다 전문 헬퍼 map, select, invoke : (...) 밑줄은 모두 일반적인 기능 용의자를 지원하는 60 여개의 기능을 제공합니다. 이 내장 함수에 대표, 현재, 그래서 최신 브라우저가 forEach, map, reduce, filter, every, someindexOf의 기본 구현을 사용합니다. union, intersectiondifference, 유형 검사 기능 isXXX (isArray 등) 등의

이 그것은 또한 한 설정과 같은 기능, 기능 케이크와 같은 라이브러리없이 자신을 써서 더 많은 물건.

언더 코어는 깨끗한 코드를 가지고 있으며 최근에는 잘 테스트되었고 quite popular입니다. JS 프로젝트에서 매일 사용합니다. 질문 편집 후


편집 :

내가 구아바을 알고는 multimap의, MULTISET 등을 가지고 있지만 자바 디자인의 모든 consequesnce하고는 JS에서 이러한 컬렉션을 1 일에 구현을 쓰기 어렵다. 대신 프로토 타입을 사용

  • 정적 입력, 자바 의미에서
  • 클래스 (this answer 참조),
  • 인터페이스 (그러나 다른 한편으로는 일류 개체로 기능이있다 : 그것은 자바 스크립트없이이 때문이다),
  • 쉽게 정의 객체 평등 (var t1 = { test: 1 }, t2 = { test: 1 }; t1 === t2

그래서 GE를 쓰기 어렵다) false입니다 neral-use Multiset 또는 Multimap을 언급하지 않고 구현을 설정합니다. 예를 들어 Closure's one 또는 this one과 같은 일부 구현이 있지만 완벽하지는 않습니다. Set (!)에 삽입 된 요소를 먼저 수정합니다.), 두 번째 주류, 잘 테스트 프로젝트 (그리고 개인적으로 나는 그것을 사용하지 적이 더 이상 말할 수 없다).

자바 스크립트는 단지 var multimap = { key: [ 1, 2, 3.0 ], key2: [ 4, 'test', { bla: null }, 1 ] }이며, 언어 디자인 때문에 multimap.containsValue({ bla: null })을 사용할 수 없습니다. underscore.js는 배열 및 객체 인 JS 콜렉션과 함께 95 %의 유틸리티 기능을 가지고 있기 때문에 언급했습니다. 더 많은 것을 원한다면 Closure's structs을 사용하십시오. 그러나 라이브러리 자체는 꽤 큽니다.