2012-01-16 21 views
10

मैं एक जावास्क्रिप्ट लाइब्रेरी की तलाश में हूं जो मुख्य रूप से फ़िल्टरिंग, सॉर्टिंग और ग्रुपिंग/गिनती के लिए ऑब्जेक्ट्स के सरणी का उपयोग करता है।underscore.js के लिए विकल्प

ऐसा लगता है कि underscore.js बिल को फिट करता है, लेकिन मुझे अन्य विकल्पों का पता लगाने में दिलचस्पी होगी। अंडरस्कोर में 60+ फ़ंक्शन हैं जबकि मुझे केवल एक मुट्ठी भर की आवश्यकता है।

उदाहरण के लिए, मैं कुछ डेटाटेबल पुस्तकालयों को ऐसी सुविधाओं को शामिल करने की अपेक्षा करता हूं, लेकिन मुझे नहीं पता कि कहां देखना है।

+0

आप हमेशा कार्यों की * मुट्ठी बाहर अलग करना सिर्फ कोशिश कर सकते हैं/तरीकों आप फार्म [स्रोत] की जरूरत है (http://documentcloud.github.com/underscore/docs/underscore.html) – rlemon

+0

पर Raynos आधार * 'जवाब, मैं वास्तव में सोच रहा हूं कि मुझे ईएस 5 शिम से जो चाहिए उसे बाहर निकालना चाहिए। – Christophe

उत्तर

8

यह जावास्क्रिप्ट arr.filter, arr.sort, arr.length कहा जाता है।

आप एक सरणी पर कोई सरणी विधि लागू कर सकते हैं, लोकप्रिय वालों filter, map और reduce, आप उन के संयोजन के द्वारा और अधिक जटिल आपरेशनों का निर्माण कर सकते हैं।

तुम पर वस्तुओं का उपयोग

Object.keys(o).forEach(function (key) { 
    var val = o[key]; 
    ... 
}); 

अगर आप एक ES3 दुनिया में रहते हैं अंडरस्कोर उपयोगी है, लेकिन ES5 सब कुछ आप की जरूरत है पुनरावृति करना चाहते हैं, सभी को रेखांकित करता है यह की चोटी पर ब्लोट जोड़ने है।

+21

'arr.length'? मैं आपको अपने कार्यक्रम में समुद्री डाकू की संख्या नहीं देता? ;) –

+2

मैं ऐसी दुनिया में रहता हूं जहां आईई 8 और यहां तक ​​कि आईई 7 अभी भी लोकप्रिय हैं ... http://kangax.github.com/es5-compat-table/ – Christophe

+4

@ क्रिस्टोफ़े [ES5-shim] (https: // github.com/kriskowal/es5-shim) समस्या हल हो गई। – Raynos

5

आप नीचे दिए गए दो पुस्तकालयों में देखना चाहते हो सकता है:

+0

धन्यवाद।जाहिर है कि दूसरा नंबर केवल संख्याओं के सरणी पर काम करता है, जबकि मुझे वस्तुओं के सरणी के लिए समाधान की आवश्यकता होती है। – Christophe

18

मैं जानता हूँ कि इस पुरानी है, लेकिन आप lodash पर देखने की थी और अधिक? साइट से:

Underscore.js के लिए एक ड्रॉप-इन प्रतिस्थापन *। [...]

कस्टम बिल्ड लो-डैश के हल्के संस्करणों को बनाने में आसान बनाता है जिसमें केवल आवश्यक विधियां होती हैं। इसे ऊपर करने के लिए, हम आपके लिए सभी विधि निर्भरता और उपनाम मैपिंग को संभालते हैं।

+0

अंडरस्कोर पर लो-डैश का क्या फायदा है? अंडरस्कोर पहले से ही छोटा है। – blaster

+2

@blaster: लो-डैश काफी अधिक अनुकूलित है। आप यहां कुछ अच्छे विज़ुअलाइज्ड बेंचमार्क परिणाम देख सकते हैं: http://dtao.github.io/lazy.js/ –

10

आलसी मूल्यांकन की वजह से lazy.js पर एक नज़र (http://dtao.github.io/lazy.js/) Underscore.js के समान लेकिन महत्वपूर्ण प्रदर्शन improvment साथ ले लो

+2

यह लाइब्रेरी केवल तब तक प्रदर्शन प्राप्त करती है जब आप कई संचालन एक साथ श्रृंखला करना चाहते हैं। एक एकल 'नक्शा() 'या' कम()' प्रदर्शन करने से शून्य प्रदर्शन लाभ दिखाई देगा (यह वास्तव में कुछ मामलों में धीमा हो जाएगा विशेष रूप से लॉनाश की तुलना में)। हालांकि, इसके प्रदर्शन लाभ ** बहुत बड़े डेटा सेट पर काम करते समय ** वास्तव में ध्यान देने योग्य हैं। – idbehold

+3

@idbehold: यह पर्यावरण और सरणी के आकार पर निर्भर करता है, क्योंकि विभिन्न जावास्क्रिप्ट इंजन बहुत अलग तरीके से व्यवहार करते हैं। क्रोम पर, उदाहरण के लिए, छोटे सरणी के लिए भी और Lazy.js को चेन किए बिना लो-डैश से बेहतर प्रदर्शन करता है। लेकिन फ़ायरफ़ॉक्स पर, आप सही हैं कि उस परिदृश्य में लो-डैश तेज है। –

1

lowscore एक बहुत ही हल्के अंडरस्कोर होना करने का इरादा है:

  • आप कर सकते हैं require केवल आपको आवश्यक कार्यों को
  • जेएस आकार को लगभग 15k minified, या लगभग 50k गैर-minified द्वारा कम कर सकता है।
संबंधित मुद्दे