【问题标题】:Looping an object of objects and breaking on finding a particular value循环对象对象并在找到特定值时中断
【发布时间】:2021-03-01 03:30:01
【问题描述】:

我有一个生成的对象,如下所示:

var objectofobjects = {
  "2": {
    "propertyx": "23",
    "reset": false,
    "propertyz": 6
  },
  "3": {
    "propertyx": "33",
    "reset": false,
    "propertyz": 8
  },
  "4": {
    "propertyx": "44",
    "reset": false,
    "propertyz": 10
  },
  "5": {
    "propertyx": "45",
    "reset": true,
    "propertyz": 12
  }
}

我要做的是在 JavaScript 中构造一个适当的循环,该循环遍历 objectofobjects 中包含的对象,并检查每个属性上的 reset 属性。如果在重置属性上找到 true 值,例如在上面的代码块中,我希望循环中断并返回 true 值。

【问题讨论】:

  • 对我来说听起来像是一个简单的for 循环。有什么问题?
  • 请向我们展示您的尝试并解释您面临的问题。另请注意,如果顺序对您很重要,您应该使用数组,而不是对象。
  • for (key in objectofobject) { test if objectofobjects[key].reset is true, then return true }
  • 感谢您的 cmets 和观察。这确实应该很简单 - 请参阅接受的答案 - 但我今天过得很艰难,这就是我发现自己在网站上的原因。

标签: javascript loops foreach for-in-loop


【解决方案1】:
for(var i in objs){
      var obj = objs[i];
       if(obj.reset){
            return true;
      }
}

【讨论】:

  • 这看起来应该很简单,但我今天发现自己在 Stack Overflow,因为我筋疲力尽并且充满了脑雾。感谢您的解决方案,我真的很感激。
  • 欢迎您。你的健康更重要。如果您已经筋疲力尽,请休息一下。如果您继续,您的代码中可能会出现很多错误,这可能会导致第二天晚上的不安。
【解决方案2】:

这很简单。只需使用 for 循环浏览对象并检查每个对象中的“重置”值,如下所示。

for (key in objectofobjects)
{
    if(objectofobjects[key].reset === true)
    {
        console.log('Found object whose reset value is true');
        return true;
    }
}

【讨论】:

    【解决方案3】:

    这应该可以工作

    function checkReset(object) {
        for (var key in object) {
            if (objectofobjects[key]["reset"] === true) {
                return true;
            }
        }
        return false;
    }
    

    【讨论】:

      【解决方案4】:

      Array#some 就是为此而发明的:

      var objectofobjects = {
        "2": {
          "propertyx": "23",
          "reset": false,
          "propertyz": 6
        },
        "3": {
          "propertyx": "33",
          "reset": false,
          "propertyz": 8
        },
        "4": {
          "propertyx": "44",
          "reset": false,
          "propertyz": 10
        },
        "5": {
          "propertyx": "45",
          "reset": true,
          "propertyz": 12
        }
      }
      
      console.log(
        Object
          .values(objectofobjects)
          .some(
            ({reset}) => reset
          )
      )

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-06-28
        • 2012-03-09
        • 1970-01-01
        • 2021-07-16
        • 2016-03-17
        • 2015-03-27
        • 2014-06-16
        相关资源
        最近更新 更多