javascript - 检查可能 undefined object 属性的最佳方法

标签 javascript for-loop object

我有一个对象(oUsed),其中包含网格的“阻止”字段。如果某个字段被阻止,则它是“true”。如果没有被阻止,则它是未定义的。

现在可能发生的是,整条线(x 坐标值)没有被阻挡。因此以下代码将失败,因为它检查 undefined object 的属性。

    let oUsed = {
      "x1":{
        "y2": true; 
        "y3": true;
      }
      "x3":{
        "y2": true;
      }
    }
    let iY = 2;

    for (let iX=1;iX <= 3; iX++) {
        if (oUsed[`x${iX}`][`x${iY}`]) {
          break;
        }
    }

分两步完成是可行的,但不太漂亮。

    for (let iX=1;iX <= 3; iX++) {
      if (oUsed[`x${iX}`]) {
        if (oUsed[`x${iX}`][`x${iY}`]) {
          break;
        }
      }
    }

这种检查的最佳实践是什么?

最佳答案

使用Object.hasOwnPropertyObject.hasOwn

 if (oUsed.hasOwnProperty(`x${iX}`) && oUsed[`x${iX}`][`x${iY}`])

像这样使用

 if (oUsed[`x${iX}`] && oUsed[`x${iX}`][`x${iY}`]) {

或者如果Optional Chainingyour target browser 支持

if (oUsed[`x${iX}`]?.[`x${iY}`]) 

关于javascript - 检查可能 undefined object 属性的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72977824/

相关文章:

javascript - 烦人的弹出窗口 - (或其他更优雅的解决方案)

javascript - 如何使用 PHP 获取 JSON 输出

python - 使用插入排序将列表从最大到最小排序

c - for 循环中的空语句 VS 无限 while

html - Flash 对象后不需要的垂直空间

javascript - 如何将类添加到动态创建的 DOM 元素或类中

python - 附加到 for 循环中的列表列表

php - 修复 PHP 空函数

java - 具有数百个方法的 Java 对象是否昂贵?

javascript - 如何将 css 应用于 textarea 标签内以逗号分隔的文本? (React.js 元素)