当前位置: 首页 > 知识库问答 >
问题:

对对象内容(值选项)节点应用筛选

章烨烨
2023-03-14

我试图通过一个对象,和一些属性,我有有限数量的值,他们可以分配给。下面是我目前检查它们价值的方法:

    for (const [attribute, value] of Object.entries(params.object)) {
      if(attribute == "accountType")
        if(value != "external" && value != "internal") 
          return { status: `Failed! '${attribute}' must only equal to 'internal' or 'external'` };
      else if(attribute == "dnsName")
        if(value.match('^[a-z]*-[0-9]*$') == null) 
          return { status: `Failed! '${attribute}' must follow the pattern [a-z]*-[0-9]*` };
      else if(attribute == "edition")
        if(value != "starter" && value != "basic" && value != "classic") 
          return { status: `Failed! '${attribute}' must only equal to 'starter', 'basic' or 'classic'` };
      else if(attribute == "forceProvision" || attribute == "installSoltions")
        if (typeof value !== "boolean")
            return { status: `Failed! '${attribute}' must be of type boolean true/false` };
    }

有没有办法对此进行优化?

共有1个答案

巫朝明
2023-03-14

对于不需要模式匹配的简单情况,可以指定format对象并执行以下操作:

// the arrays represent the possible values an object respecting this format can take.
let format = {
    greeting: ['hello', 'goodbye'],
    direction: ['right', 'left'] 
}

// here's a test object that does not respect said format.
let a = {
    greeting: 'hello',
    direction: 'not a desirable value'
};

for(const [attribute, value] of Object.entries(a)) {
    // - 1 on indexOf means not present in array. Here we check that the
    // value of the attribute respects the format.
    if(format[attribute].indexOf(value) == -1) {
        console.log(`Incorrect format for ${attribute}, expected ${format[attribute]}`);
    } else {
        // saul'goodman
        console.log(`${attribute} correctly formatted.`);
    }
}

希望这能帮你解决问题。

 类似资料:
  • 我需要获得的模块,与那些张贴的地方等于“维也纳”,我无法消除那些没有通过验证。 这是JSON。 预期结果 这就是我正在尝试的 实际结果 我无法删除那些不符合条件的帖子。

  • 问题内容: 当我想更改所选选项时,我的反应有问题。问题在于该值是一个对象,我无法在选项值属性中传递它。 请参见以下代码: 与 我需要使用所选选项的值更改组件的状态。状态改变时我得到什么。我想发生这种情况是因为react无法将javascript对象嵌入最终视图的属性中。我是正确的? 而且,我在构造函数中将state 设置为null是否有正确的方法? 问题答案: 您可以利用的 此外,我在构造函数中将

  • 我是Elasticsearch的新手,我试图创建一个过滤器来检索具有特定属性的文档。 属性在映射中定义为嵌套对象,如下所示: 我试图以以下形式执行一个复杂的查询: 这是elasticsearch 2.x。我做错了什么?

  • 我希望能够过滤评论,所以只有真正的评论将为每个博客对象显示。我想展示每一个博客,而不仅仅是那些有真实评论的博客。我在网上找到的所有其他解决方案似乎都影响了我的博客对象。有没有一种方法可以过滤掉评论对象而不影响所有博客的查询? 因此,上述示例将在查询之后返回: 该示例仍然显示了没有评论或错误评论的博客。 这可能吗? 我一直在使用这个示例中的嵌套查询:ElasticSearch-Get只匹配嵌套对象与

  • 所以我使用redux和useSelector钩子从Store获取数据。 我可以在一个reducer数组中过滤特定的数据,这样组件只在过滤的数据发生变化时才更新,例如: 然而,当我尝试对一个对象进行相同的操作时,即使存储区没有改变,组件也总是重新呈现。例如: 为什么会发生这种情况,以及如何在数据发生变化时才进行更新?我假设将一些深入的比较函数传递给useSelector?

  • 我如何过滤对象数组,以移除那些没有最大年龄值的对象。