javascript - 如何在 Javascript 中获取属性的最后一个元素,如果不存在则返回 undefined

标签 javascript

在线评分器的大多数条件都表明测试通过,除了如果最后一个属性不存在则返回未定义(如果不存在则应返回未定义)。

在这种情况下,评分者告诉我“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/

相关文章:

javascript - 如何通过 AirWatch 浏览器调试在 iOS 中运行的 Web 应用程序?

javascript - Karma vs Protractor,单元测试 vs. e2e 测试

javascript - 从 ASP.NET 背后的代码调用 Javascript 函数

php - 从javascript函数打开一个php页面

Javascript 从 0.0.0 以 00.00.00 格式返回时间

当 web-inspector 关闭时 JavaScript 在 mobile-safari 上失败

javascript - 如何在 Kotlin 中使用名为 "val()"的函数?/扩展外部 JS 类

javascript - 检测浏览器(可能的返回值)

javascript - Angularjs - 将服务数据绑定(bind)到许多 Controller 中的模型

javascript - ResizeObserver 调用期间未捕获的 TypeError : chartObj. 宽度不是函数