【发布时间】:2019-08-22 21:27:20
【问题描述】:
以下是问题:
// 获取最长的名字
// 编写一个函数,getLongestName,它接受一个对象。该对象代表一个家谱。返回家族中最长的名字。
这是代码,但它返回错误:
let family = {
'Beverly Marquez': {
'Nina Rhone': {
'William Rhodes': null,
'Paul Nell': null,
'Sir Paddington the Fourth, of the county Wilstonshire': null
}
}
};
function getLongestName (family){
let longestName = '';
for (let key in family){
let value = family[key]
console.log(value)
if (typeof value === 'object'){
let descendentLongestName = getLongestName (value)
}
else {
descendentLongestName = value
}
if (descendentLongestName.length > longestName.length){
let longestName = descendentLongestName
}
}
return longestName;
}
getLongestName(family); // => 'Sir Paddington the Fourth, of the county Wilstonshire'
当我运行上述代码时,我收到以下错误:ReferenceError: descendentLongestName is not defined
我做错了什么?
【问题讨论】:
-
您需要在声明
longestName的地方声明descendentLongestName,而不是在if块内。而且你不需要在最后一个if中使用let,因为longestName已经声明了。
标签: javascript object recursion nested key