【发布时间】:2021-07-14 21:41:36
【问题描述】:
我有一个如下所示的对象数组:
[
{
"id":1,
"type":"Greater than",
"value":"5"
},
{
"id":1,
"type":"Less than",
"value":"29"
},
{
"id":2,
"type":"Less than",
"value":"40"
},
{
"id":3,
"type":"Greater than",
"value":"50"
},
{
"id":3,
"type":"Less than",
"value":"10"
},
{
"id":4,
"type":"name",
"value":"Anna"
}
]
如果每个 ID 的所有大于/小于都是正确的,我想做一些验证并返回 true。
例如,上面应该返回 false,因为 ID 3 的大于值大于小于值(即使 ID 1 是正确的)。
并非所有 ID 都会同时具有大于和小于(参见 ID 2 和 ID 4)
我一直在尝试不同的方法,但似乎找不到解决方案。
【问题讨论】:
-
嗨!请参阅 minimal reproducible example 和 How to Ask,因为“我一直在尝试不同的方法,但似乎找不到解决方案”,您可以向我们展示您的尝试,以便我们提供帮助。
-
我尝试过使用 Array.find 但问题是获取所有匹配的 ID,然后检查它们的范围值。并非所有 ID 都有一对@Wyck
-
这会让一些人抽搐,因为
id通常是一个独特的字段。如果它是某个else 的 id,比如相关字段的 id,那么可以将其称为key或其他名称,所以我们知道它不应该是唯一的。即便如此,值得一提的是这是一个多映射(其中每个键可以有多个值)。 -
你有三个问题1)在数组中定位适用的对象(为此使用Array.filter),2)测试是否所有过滤条件都适用(Array.every在过滤结果上)和3)使具有属性
"type":"Greater than", "value":"5"的对象引用执行检查(input) => input > 5的函数并将其应用于输入。那么这三个中的哪一个是您的实际问题? -
应该如何验证
{ "id":4, "type":"name", "value":"Anna" }?
标签: javascript node.js arrays object