जावास्क्रिप्ट सरणी मान अपरिभाषित है ... मैं उसके लिए कैसे परीक्षण करूं?

तथा

जावास्क्रिप्ट में एक अपरिभाषित चर की जांच कैसे करें

जहां तक ​​मेरा संबंध है ये गलत हैं:

मुझे केवल मिलता है: error

कोशिश करते समय:

console.log(!fromToParameters[7].value.firstInput);
console.log(!!fromToParameters[7].value.firstInput);
console.log(fromToParameters[7].value.firstInput === undefined);
console.log(typeof fromToParameters[7].value.firstInput == 'undefined');
console.log(fromToParameters[7].value.firstInput !== undefined);
console.log(typeof fromToParameters[7].value.firstInput != 'undefined');

लेकिन यह (प्रविष्टि मौजूद है) ठीक काम करता है:

console.log(!fromToParameters[0].value.firstInput);
console.log(!!fromToParameters[0].value.firstInput);
console.log(fromToParameters[0].value.firstInput === undefined);
console.log(typeof fromToParameters[0].value.firstInput == 'undefined');
console.log(fromToParameters[0].value.firstInput !== undefined);
console.log(typeof fromToParameters[0].value.firstInput != 'undefined');

झूठा सच झूठ सच झूठ सच

क्या यह प्रतिक्रिया जेएस से अलग होने का सवाल है? मैं इन स्टैक ओवरफ्लो थ्रेड्स के समान क्यों नहीं कर सकता?

अपडेट करें :

इसलिए आप एक लापता सरणी तत्व को बिल्कुल भी इंगित नहीं कर सकते।

नीचे दिए गए उत्तरों की जाँच करें।

मुझे लगता है कि मैं एक कॉन्स्ट में संग्रहीत एक array.lenght का उपयोग करूँगा कि मैं केस-दर-मामला आधार पर मेरी सरणी प्रविष्टियों को संशोधित करने की अनुमति देने या अस्वीकार करने के लिए अपने "फॉर" लूप के भीतर इसके खिलाफ अपनी वृद्धि की जांच करता हूं।

यह वास्तव में कष्टप्रद है कि आप केवल जेएस से नहीं पूछ सकते हैं कि एक मौजूदा सरणी अनुक्रमणिका का एक बहुत बड़ा संस्करण मौजूद है या नहीं।

ऐसा लगता है कि यह सीधा सामान होगा: सूचकांक को इंगित नहीं कर सकता? तो नहीं। न यह चर और न ही कोई अन्य चर इस सूचकांक में मौजूद है। का अंत।

जेएस के लोगों को निश्चित रूप से इस तरह कुछ सरल जोड़ने के लिए एक नोट रखना चाहिए।

मैं अपना कोड पोस्ट करने के लिए ललचा रहा हूं क्योंकि मेरे पास कुछ ऐसा है जो मुझे वह करने की अनुमति देता है जो मैं चाहता हूं (एक इंडेक्स को बहुत सारे अपरिभाषित के साथ कॉल करना और इसके बजाय "" के साथ एक ऑब्जेक्ट प्राप्त करना) लेकिन यह थोड़ा राक्षसी है।

0
tatsu 12 सितंबर 2017, 18:45

2 जवाब

सबसे बढ़िया उत्तर

आपको ऐसा करना चाहिए:

console.log(fromToParameters[7] && fromToParameters[7].value.firstInput);
console.log(!!fromToParameters[7] && fromToParameters[7].value.firstInput);
console.log( fromToParameters[7]&& typeof fromToParameters[7].value.firstInput == 'undefined');

मैंने अभी चेक जोड़ा है। इसलिए यदि fromToParameters[7], undefined या null है, तो आपका कोड नहीं टूटेगा।

1
Ved 12 सितंबर 2017, 19:30

पहले अनुक्रमणिका की जाँच करें (उदा: console.log(!yourArray[x]), फिर यह निर्भर करता है कि क्या वह परीक्षण पास या विफल रहता है, अपनी इच्छित अनुक्रमणिका/गुणों को एक्सेस/जोड़ें।

1
connected_user 12 सितंबर 2017, 18:57