jQuery में, filter()
आपके परिणाम को उन तत्वों को कम कर देता है जो एक निश्चित स्थिति को पूरा करते हैं।jQuery: फ़िल्टर() का उपयोग करें, लेकिन दोनों परिणामों के साथ काम करें
यह सूची को दो भागों में विभाजित करता है। तत्वों की "अच्छा आधा" के साथ कार्य करना आसान है:
$("some selector").filter(function() {
// determine result...
return result;
}).each(/* do something */);
लेकिन यह कैसे मैं भी मेरी तत्वों की "अन्य आधा" के साथ काम कर सकते हैं - लेकिन के बराबर इस कर के बिना:
$("some selector").filter(function() {
// determine result...
return !result;
}).each(/* do something else */);
असल में, मैं एक अलग फ़िल्टर में दो अलग /* do something */
भागों को खिलाना चाहता हूं। उन लोगों के लिए जो मिलान करते हैं, और दूसरों के लिए एक - दो बार फ़िल्टर किए बिना। क्या मुझे एक jQuery फ़ंक्शन याद आ रहा है जो यह करता है?
पी.एस .: मुझे लगता है मैं कर सकता है:
$("some selector").each(function() {
// determine result...
if (result)
/* do something */
else
/* do something else */
});
लेकिन मैं अच्छे के लिए कुछ के लिए उम्मीद की गई थी।
मुझे लगता है कि यह 'प्रत्येक() 'होगा। – Matt
http://jsfiddle.net/nZtRF/ शायद एक बात ध्यान देने योग्य है कि 'नहीं()' विधि के साथ, प्रदर्शन तेजी से घटता है क्योंकि तत्वों की संख्या बढ़ जाती है। छोटी मात्रा के लिए, यह मामूली है। बड़ी मात्रा में, आपको फ़िल्टर में 'if()' कथन का उपयोग करके बेहतर प्रदर्शन मिलेगा। उपरोक्त jsfiddle लिंक पर परीक्षण देखें, और मात्रा के साथ गड़बड़ करें। – user113716
@patrick: बहुत सच है। यह एक गंभीर कमी है। : - \ – Tomalak