वापसी की स्थिति में काम नहीं करता है। हालांकि कंसोल.लॉग ठीक काम करता है। समस्या यह है कि फ़ंक्शन हमेशा झूठी वापसी करता है।

function func(obj, input) {
  if (input === obj) {
    console.log('Here it works');
    return true; //expected return tr
  };

  for (let key in obj) {
    func(obj[key], input);
  }

  return false;

}

1
Exoriri 23 सितंबर 2018, 11:51

2 जवाब

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

आपको for लूप के अंदर कॉल के रिटर्न वैल्यू की जांच करने और true लौटने के साथ बाहर निकलने की जरूरत है।

function contains(obj, input) {
    if (input === obj) {
        return true;
    }

    if (!obj || typeof obj !== 'object') { // check for objects
        return false;                      // and exit if not with false
    }

    for (let key in obj) {
        if (contains(obj[key], input)) {  // check for true
            return true;                  // return only if true
        }
    }
    return false;
}

console.log(contains('a', 'a'));
console.log(contains('a', 'b'));
console.log(contains({ foo: { bar: { baz: 42 } } }, '42'));
console.log(contains({ foo: { bar: { baz: 42 } } }, 42));
1
Nina Scholz 23 सितंबर 2018, 12:00

मुझे लगता है कि यह ठीक काम कर रहा है

    function func(obj, input) {
  if (input === obj) {
    console.log('Here it works');
    return true; //expected return tr
  };

  for (let key in obj) {
    contains(obj[key], input);
  }

  return false;}

var a ={}

console.log(func(a,a));
Here it works
 true
0
Vimit Dhawan 23 सितंबर 2018, 12:12