【发布时间】:2023-03-06 12:39:02
【问题描述】:
我有一个 JSON 中多个项目的列表,如下所示:
[
{
IsValid: true,
forSale: false,
Color: red,
value: 22
},
{
IsValid: false,
forSale: true,
Color: blue,
value: 123
}
]
然后用户将选择过滤器来搜索列表,例如:
[color: red, forSale: true, value over 10]
通过 JSON过滤多个值的最简单方法是什么?
我尝试将过滤后的选项作为对象,例如:
{forSale: true, color: blue}
然后执行 JSON 的 forEach,并使用过滤选项的嵌套 Object.map,但如果有两个或多个项目,则 Object.mapping 不会返回正确的结果。
对于多个选项,您将如何过滤 JSON 中的一长串项目?
【问题讨论】:
-
您没有 JSON 数据。关于非常重要的技术点:“JSON”是字符串序列化的数据形式。在你解析它之前它什么都不是。你不能
forEach它,你不能Object.map它,你必须先解析它,此时它停止是JSON并成为常规JS对象的常规JS数组,因此,您的问题实际上是关于如何使用多个键/值过滤一组普通对象,并且在 SO 和整个网络上已经有了答案。 -
好吧,很公平 - 你是对的,它不是 JSON。至于答案 - 我看了看,发现在 forEach 中使用了嵌套的 object.map 并且它没有正确返回我需要的东西,所以因为我整天都在努力解决它并且找不到我问的任何东西。您有可以提供的链接或建议吗?
-
“数据”不会告诉任何人你在处理什么:你有一个普通对象数组。
-
与欺骗目标的唯一区别是您需要使用条件手动比较“超过 10 的值”。
-
谢谢@ggorlen 我已经试一试了!欣赏它。
标签: javascript json