मुझे यह जांचने की ज़रूरत है कि कोई स्ट्रिंग परिभाषित मान के बराबर है और यदि ऑब्जेक्ट में hash कुंजी है।

मैं इससे बहुत भ्रमित हूं:

var my_string = 'some_string';
var my_obj = {'hash':'4010f89a05c236cd4f3a5c7558af0e70dc4216454d2d5155a285bfbad752ce51f9510272821a254'}
console.log((my_string == 'some_string' && my_obj['hash']));

वह वापसी 4010f89a05c236cd4f3a5c7558af0e70dc4216454d2d5155a285bfbad752ce51f9510272821a254

अपेक्षित true या false (इस उदाहरण में अपेक्षित true)।

2
MTK 30 मार्च 2018, 02:20

4 जवाब

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

यह सही ढंग से काम कर रहा है।

(my_string == 'some_string' && my_obj['hash']), "4010f89a05c236cd4f3a5c755..." के बराबर है जो सत्य है। उदाहरण के लिए if कथन में सशर्त के रूप में उपयोग करना ठीक है।

आप इसे वास्तविक बूलियन में भी बदल सकते हैं:

!!(my_string == 'some_string' && my_obj['hash'])
7
gunn 29 मार्च 2018, 23:31

&& हर बार बूलियन नहीं लौटाता।

जब आप स्ट्रिंग के साथ && का उपयोग करते हैं तो यह दूसरा मान देता है जब दोनों सत्य होते हैं। जब आप उपयोग करते हैं || स्ट्रिंग के साथ यह पहला मान देता है जब दोनों सत्य होते हैं।

let one = "Cat" && "Dog"     
let zwo = "Cat" || "Apple"   

एक कुत्ता लौटता है। दो रिटर्न Cat

1
Tobias 29 मार्च 2018, 23:37

एक विकल्प यह देखने के लिए in ऑपरेटर का उपयोग करना है कि वस्तु में कोई विशेष कुंजी मौजूद है या नहीं। मैं इस पद्धति को पसंद करता हूं क्योंकि जावास्क्रिप्ट में वास्तव में कुछ भयानक मूल्य हैं जिन्हें झूठा माना जाता है, जैसे 0

console.log((my_string == 'some_string' && ('hash' in my_obj)));
4
Andrew 29 मार्च 2018, 23:33

जब भी दोनों मान इस तरह सत्य होते हैं, तो && ऑपरेटर && के दाईं ओर जो कुछ भी है उसे लौटाता है:

const foo = 'foo';
const bar = 'bar';

const foobar = foo && bar;
console.log(foobar);

यह लौटा हुआ परिणाम बदले में अगर कथन के परिणाम के रूप में झूठ के सच में मजबूर हो जाता है। यह महसूस करना महत्वपूर्ण है कि यदि कथन मूल्य को बूलियन में मजबूर करता है और && कथन नहीं करता है।

4
Willem van der Veen 29 मार्च 2018, 23:32