कॉफ़ीस्क्रिप्ट में array.any()
और array.all()
विधियों को कैसे कार्यान्वित करें?कॉफ़ीस्क्रिप्ट में array.any() और array.all() विधियों को कैसे कार्यान्वित करें?
उत्तर
वे वास्तव में Javascript 1.6 का हिस्सा हैं और कॉफीस्क्रिप्ट में भी वही काम करेंगे। आप some और every चाहते हैं।
मुझे नहीं पता कि आप किस पर्यावरण में हैं, लेकिन आईई < 9 उन तरीकों का समर्थन नहीं करता है। वे जोड़ने के लिए बहुत आसान हैं। उन पृष्ठों पर कोड का एक स्निपेट है जो आपको संगतता कोड दिखाता है और यदि आप चाहते हैं कि आप उन्हें कॉफीस्क्रिप्ट में अनुवाद कर सकें, हालांकि आप don't have to हैं।
एक cruder, सरल तरीके से (untested) होगा:
if not Array.prototype.some
Array.prototype.some = (f) -> (x for x in @ when f(x)).length > 0
if not Array.prototype.every
Array.prototype.every = (f) -> (x for x in @ when f(x)).length == @length
लेकिन उन में से कोई भी शॉर्ट सर्किट तर्क है। संपादित करें: लेकिन रिकार्डो के उनके बेहतर संस्करण के लिए उत्तर देखें।
चेक बाहर underscore.js, जो आप _.any
और _.all
तरीकों (यानी _.some
और _.every
) है कि किसी भी प्रमुख जे एस वातावरण में चलेंगे साथ प्रदान करता है। यहाँ कैसे वे underscore.coffee में CoffeeScript में लागू कर रहे हैं:
_.some = (obj, iterator, context) ->
iterator ||= _.identity
return obj.some iterator, context if nativeSome and obj.some is nativeSome
result = false
_.each obj, (value, index, list) ->
_.breakLoop() if (result = iterator.call(context, value, index, list))
result
_.every = (obj, iterator, context) ->
iterator ||= _.identity
return obj.every iterator, context if nativeEvery and obj.every is nativeEvery
result = true
_.each obj, (value, index, list) ->
_.breakLoop() unless (result = result and iterator.call(context, value, index, list))
result
(। ये _.each
पर निर्भर करते हैं, एक सरल यात्रा विधि, और _.breakLoop
, जो सिर्फ एक अपवाद फेंकता है)
लघु सर्किट (अनुकूलित) संस्करणों:
Array.prototype.some ?= (f) ->
(return true if f x) for x in @
return false
Array.prototype.every ?= (f) ->
(return false if not f x) for x in @
return true
?=
"अस्तित्व काम" के लिए है, केवल तब चलता है जब कि संपत्ति null
/undefined
है।
मैं आज देख रहा था और all
एक गुना के रूप में लागू करने का फैसला, और मैं तुम्हें any
रूप में अच्छी तरह के लिए एक ही कर सकता है (लेकिन यह या तो नहीं है शॉर्ट सर्किट,) लगता है:
all = (someArray, predicate) ->
reduceAll = (left, right) ->
return left and right
return [predicate(elem) for elem in someArray].reduce(reduceAll, true)
गैर कम सर्किटिंग any
ज्यादातर समान होगा:
reduceAny = (left, right) ->
return left or right
[p(elem) for elem in someArray].reduce(reduceAny, false)
मैं all
इस तरह से किया क्योंकि मैंने पाया यह पठनीय होने के लिए। इसके अलावा, मैंने इसे एक सरणी विधि के बजाय एक फ्री-फ़्लोटिंग फ़ंक्शन के रूप में किया है।
- 1. पायथन में वर्चुअल विधियों को कैसे कार्यान्वित करें?
- 2. एकाधिक असेंबली में आंशिक विधियों को कार्यान्वित करें
- 3. जेपीए की बेसएन्टिटी में बराबर() और हैशकोड() विधियों को कैसे कार्यान्वित करें?
- 4. कॉफ़ीस्क्रिप्ट
- 5. हैशकोड को कैसे कार्यान्वित करें और विधि
- 6. कॉफ़ीस्क्रिप्ट
- 7. कॉफ़ीस्क्रिप्ट और enum मान
- 8. कॉफ़ीस्क्रिप्ट
- 9. कॉफ़ीस्क्रिप्ट
- 10. सी # में सिंगलटन को कैसे कार्यान्वित करें?
- 11. एम्बर.जेएस और कॉफ़ीस्क्रिप्ट
- 12. मोंगोद में पेजिंग को कैसे कार्यान्वित करें?
- 13. कॉफ़ीस्क्रिप्ट
- 14. रूबी में "कॉलबैक" को कैसे कार्यान्वित करें?
- 15. फोनगैप में AdMob को कैसे कार्यान्वित करें
- 16. बैज को कैसे कार्यान्वित करें?
- 17. DataGridView में ऑटोस्कोल को कैसे कार्यान्वित करें?
- 18. सी ++ में इंटरफेस को कैसे कार्यान्वित करें?
- 19. php में बिटमैस्क को कैसे कार्यान्वित करें?
- 20. BigQuery में "पसंद" को कैसे कार्यान्वित करें?
- 21. निरंतरता को कैसे कार्यान्वित करें?
- 22. एक्लिप्स में विधियों को त्वरित रूप से कार्यान्वित/ओवरराइड कैसे करें?
- 23. कॉफ़ीस्क्रिप्ट
- 24. is_pointer को कैसे कार्यान्वित करें?
- 25. कॉफ़ीस्क्रिप्ट
- 26. सिम्फनी 1.4 में एक सहायक को कैसे कार्यान्वित करें?
- 27. सी ++ में कक्षा संरचना को कैसे कार्यान्वित करें?
- 28. Django में पूर्ण पाठ खोज को कैसे कार्यान्वित करें?
- 29. जावास्क्रिप्ट में विज़िटर पैटर्न को कैसे कार्यान्वित करें?
- 30. कॉफ़ीस्क्रिप्ट कक्षाओं में स्कोप
बिल्कुल सही जवाब। मैं बस जोड़ता हूं कि पुराने ब्राउज़र के साथ संगतता के लिए underscore.js का उपयोग कर सकते हैं, जैसा कि नीचे दिया गया जवाब कहता है। – brandizzi
शॉर्ट सर्किटिंग जोड़ना आसान है, और आप '? =' भूल गए हैं, मेरा जवाब देखें :) –
@ रिकार्डो - हाँ, यह बेहतर है। इसके अलावा, मुझे नहीं पता था? = चाल, तो यह बहुत साफ है। –