जावास्क्रिप्ट में ऑब्जेक्ट सदस्य पदानुक्रम के भीतर गहराई से मूल्य की जांच करने के लिए ऐसा कुछ करने से बचने के लिए कोई सुंदर और संक्षिप्त तरीका है?

handlerInput.supportsDisplay = function() {
   return  this.requestEnvelope.context && 
           this.requestEnvelope.context.System && 
           this.requestEnvelope.context.System.device && 
           this.requestEnvelope.context.System.device.supportedInterfaces && 
           this.requestEnvelope.context.System.device.supportedInterfaces.Display;
}
3
German 26 अगस्त 2018, 20:23
1
 – 
t.niese
26 अगस्त 2018, 20:47

2 जवाब

यह धोखा है, लेकिन आप लोदाश के _.get फ़ंक्शन का उपयोग कर सकते हैं

_.get(validations, "path.to.nested.prop");

डॉक्स . से

वस्तु के पथ पर मान प्राप्त करता है। यदि हल किया गया मान अपरिभाषित है, तो उसके स्थान पर डिफ़ॉल्ट मान लौटा दिया जाता है।

0
seebiscuit 26 अगस्त 2018, 20:29
मुझे लगता है कि वह पूछ रहा था कि क्या वह डॉट्स (a.b.c.d.e.f.g.h) का उपयोग किए बिना नेस्टेड मान की जांच कर सकता है और आपने केवल लॉश के साथ ऐसा किया है।
 – 
NAVIN
26 अगस्त 2018, 20:38
2
मैं असहमत हूं। वह इसे एक पंक्ति में करना चाहता है। यही आप _.get
 – 
seebiscuit
26 अगस्त 2018, 20:47
1
मैं असहमत हूं कि यह धोखा है। LoDash पुस्तकालय कई, बहुत सी चीजों को स्पष्ट और सुरक्षित बनाता है। मैं LoDash के बिना कहीं नहीं जाता :)
 – 
random_user_name
21 अक्टूबर 2018, 21:57

मैंने एक NPM मॉड्यूल लिखा है जो आपको एक स्ट्रिंग पथ द्वारा क्वेरी करने की अनुमति देता है।

https://www.npmjs.com/package/js-path-resolver
http://www.twelvetone.tv/docs/ डेवलपर-उपकरण/एनपीएम-मॉड्यूल/जेएस-पथ-समाधानकर्ता

यहाँ एक कोडपेन है https://codepen.io/Flamenco/pen/xaVKjR/?editors=1111< /ए>

आपके उपयोग के मामले के लिए:

import resolver from 'js-path-resolver'
const info = resolver(handlerInput, 'requestEnvelope.context.System.device.supportedInterface.Display', {onError:'continue'})
const hasDisplay = info.exists
const display = info.get()

संक्षेप में, आप स्ट्रिंग को विभाजित करते हैं, फिर पथ को हल करने का प्रयास करते हैं, एक समय में एक स्ट्रिंग। इसे लागू करने में सभी प्रकार के मुद्दे हैं, जैसे कि डॉट्स से बचना, ऐरे इंडेक्स को हैंडल करना आदि, इसलिए लाइब्रेरी का उपयोग करने से जीवन बहुत आसान हो जाता है। इस पुस्तकालय में, आप हल किए गए पथ को सेट और हटा भी सकते हैं।

0
Steven Spungin 28 अगस्त 2018, 04:56