var v = 0
var x = ["a", "b", "c"];
var beasts = [{
  "kind": [{
    "q": "a"
  }, {
    "q": "b"
  }, {
    "q": "c"
  }]
}];
while (x.indexOf(beasts[0].kind[v].q)) {
  v++
  console.log("loop")
}

अपरिभाषित आउटपुट, क्या गलत है?

-1
71ck5 30 मार्च 2018, 13:20

4 जवाब

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

जब v == 0, परीक्षण x.indexOf("a") होता है। यह 0 लौटाता है, जो गलत है, इसलिए लूप तुरंत समाप्त हो जाता है।

indexOf() का उपयोग करने का सही तरीका x.indexOf(...) != -1 है।

आपको यह भी जांचना होगा कि v, beasts[0].kind के आकार के भीतर है, अन्यथा जब आप सरणी के अंत तक पहुंचेंगे तो आपको एक त्रुटि मिलेगी।

var v = 0
var x = ["a", "b", "c"];
var beasts = [{
  "kind": [{
    "q": "a"
  }, {
    "q": "b"
  }, {
    "q": "c"
  }]
}];

while (v < beasts[0].kind.length && x.indexOf(beasts[0].kind[v].q) != -1) {
  v++
  console.log("loop")
}
1
Barmar 30 मार्च 2018, 10:25

आप beasts[0].kind[v] के लिए undefined मामले की जांच करने से चूक रहे हैं, क्योंकि आप v के मान को while लूप के अंदर बढ़ा रहे हैं, v का अंतिम मान अधिक होगा आंतरिक सरणी की लंबाई की तुलना में जिसके परिणामस्वरूप undefined होगा। आपको indexOf संगणना की भी आवश्यकता नहीं है।

var v = 0
var x = ["a","b","c"];
var beasts = [{"kind": [{"q": "a"}, {"q": "b"}, {"q": "c"}]}];
while (beasts[0].kind[v]) {
  v++;
  console.log("loop");
}

लेकिन अगर आप q संपत्ति सुनिश्चित करना चाहते हैं तो आप इसका उपयोग कर सकते हैं

var v = 0
var x = ["a","b","c"];
var beasts = [{"kind": [{"q": "a"}, {"q": "b"}, {"q": "c"}]}];
while (beasts[0].kind[v] && x.indexOf(beasts[0].kind[v].q) != -1) {
  v++;
  console.log("loop");
}
0
Ankit Agarwal 30 मार्च 2018, 10:26

आप स्निपेट में देख सकते हैं कि while में आपकी स्थिति का मूल्यांकन 0 होता है, जो एक गलत मान है। While लूप कभी नहीं चलता!

var v = 0
var x = ["a","b","c"];
var beasts = [{"kind": [{"q": "a"}, {"q": "b"}, {"q": "c"}]}];
while (x.indexOf(beasts[0].kind[v].q)) {
v++
console.log("loop")
}
console.log(beasts[0].kind[v].q);
console.log(x.indexOf(beasts[0].kind[v].q));
0
Tomasz Bubała 30 मार्च 2018, 10:24

आप परीक्षण कर सकते हैं कि वस्तु मौजूद है या नहीं।

var v = 0
var x = ["a", "b", "c"];
var beasts = [{
  "kind": [{
    "q": "a"
  }, {
    "q": "b"
  }, {
    "q": "c"
  }]
}];
while (beasts[0].kind[v]) {
  console.log(x.indexOf(beasts[0].kind[v].q))
  v++
}
0
Nina Scholz 30 मार्च 2018, 10:27