退货在某种情况下不起作用。虽然console.log可以正常工作。问题在于该函数总是返回false。
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;
}
答案 0 :(得分:1)
您需要在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 :(得分:0)
我认为它工作正常
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