कोड पठनीय होना चाहिए, इसलिए रसीला होने का मतलब यह नहीं होना चाहिए कि लागत कितनी भी हो - आपको इसके लिए https://codegolf.stackexchange.com/ पर रिपॉजिट करना चाहिए - इसलिए इसके बजाय मैं एक और स्थानीय चर का उपयोग करने की सलाह दूंगा जिसका नाम index
पढ़ने की समझ को अधिकतम करने के लिए है न्यूनतम रनटाइम लागत के साथ, मैं ध्यान दें):
var index = someArray.indexOf( 3 );
var value = index == -1 ? 0 : index;
लेकिन अगर आप वास्तव में इस अभिव्यक्ति को कम करना चाहते हैं, क्योंकि आप अपने सहकर्मियों या परियोजना सहयोगियों के लिए एक क्रूर दुखवादी हैं, तो यहां 4 दृष्टिकोण हैं जिनका आप उपयोग कर सकते हैं:
1: एक var
कथन में अस्थायी चर
अल्पविराम से अलग होने पर आप var
दूसरे अस्थायी चर को परिभाषित (और असाइन) करने के लिए कथन की क्षमता का उपयोग कर सकते हैं index
:
var index = someArray.indexOf(3), value = index !== -1 ? index: 0;
2: स्व-निष्पादित अनाम फ़ंक्शन
एक अन्य विकल्प एक स्व-निष्पादित अनाम फ़ंक्शन है:
// Traditional syntax:
var value = function( x ) { return x !== -1 ? x : 0 }( someArray.indexOf(3) );
// ES6 syntax:
var value = ( x => x !== -1 ? x : 0 )( someArray.indexOf(3) );
3: कोमा संचालक
कुख्यात "अल्पविराम ऑपरेटर" भी है जो जावास्क्रिप्ट का समर्थन करता है, जो सी और सी ++ में भी मौजूद है।
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Comma_Operator
आप कॉमा ऑपरेटर का उपयोग कर सकते हैं जब आप एक अभिव्यक्ति में कई अभिव्यक्तियों को एक स्थान पर शामिल करना चाहते हैं।
आप इसका उपयोग साइड-इफ़ेक्ट लागू करने के लिए कर सकते हैं, इस मामले में इसे पुन value
: असाइन करके :
var value = ( value = someArray.indexOf(3), value !== -1 ? value : 0 );
यह काम करता है क्योंकि var value
पहले व्याख्या की जाती है (जैसा कि यह एक कथन है), और फिर बाएं-सबसे, आंतरिक-सबसेvalue
असाइनमेंट, और फिर कॉमा ऑपरेटर के दाहिने हाथ, और फिर टर्नरी ऑपरेटर - सभी कानूनी जावास्क्रिप्ट।
4: सब-डेप्रिसिएशन में पुनः असाइन करें
कमेंटेटर @IllusiveBrian ने बताया कि अल्पविराम-संचालक का उपयोग (पिछले उदाहरण में) अनावश्यक है यदि असाइनमेंट को value
एक कोष्ठक उपपरिवर्तन के रूप में उपयोग किया जाता है:
var value = ( ( value = someArray.indexOf(3) ) !== -1 ? value : 0 );
ध्यान दें कि तार्किक अभिव्यक्तियों में नकारात्मकता का उपयोग मनुष्यों के लिए कठिन हो सकता है - इसलिए उपरोक्त सभी उदाहरणों को पढ़ने के लिए सरल बनाया जा सकता idx !== -1 ? x : y
है idx == -1 ? y : x
:
var value = ( ( value = someArray.indexOf(3) ) == -1 ? 0 : value );
if
और नहींif/else