在线评分器的大多数条件都表明测试通过,除了如果最后一个属性不存在则返回未定义(如果不存在则应返回未定义)。
在这种情况下,评分者告诉我“TypeError:obj[key]未定义”。也许这很容易,但我不明白我错过了什么。这是我到目前为止所拥有的。
function getLastElementOfProperty(obj, key) {
var length = obj[key].length
if(length === 0){
return undefined
}
if(!Array.isArray(obj[key])){
return undefined
}
if(obj[key].length === 0){
return undefined
}
else{
return obj[key][length-1]
}
}
最佳答案
obj[key].length
当没有这样的键时会抛出错误,因为它会转换为 undefined.length
。
将其更改为以下代码:
if (typeof obj[key] === 'undefined') {
return undefined;
}
<小时/>
优化您的如果:
if (typeof obj[key] !== 'undefined' && Array.isArray(obj[key]) && obj[key].length !== 0) {
return obj[key][length-1];
}
return undefined;
如果在 if 条件段中发现 false,解析器将不会评估进一步的条件。例如。如果 typeof obj[key] === 'undefined'
则不会检查 Array.isArray(obj[key])
所以基本上你的函数可以转换为单行:
function getLastElementOfProperty(obj, key) {
return typeof obj[key] !== 'undefined' && Array.isArray(obj[key]) && obj[key].length !== 0
? obj[key][length-1]
: undefined;
}
关于javascript - 如何在 Javascript 中获取属性的最后一个元素,如果不存在则返回 undefined,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41823416/