使用 Vue 过滤以检索嵌套对象中的特定值

Posted

技术标签:

【中文标题】使用 Vue 过滤以检索嵌套对象中的特定值【英文标题】:Filter to retrieve specific value in nested object using Vue 【发布时间】:2021-11-02 16:34:37 【问题描述】:

我有一个嵌套的 json 对象:


  "51": 
    "wheels": 10,
    "id": 1,
    "name": "truck"
  ,
  "55": 
    "wheels": 4,
    "id": 33,
    "name": "Car"
  ,
  "88": 
    "wheels": 2,
    "id": 90,
    "name": "Bike"
  

我想按 ID 过滤,但只返回***,即。

过滤器 ID = 33,这将返回 4。

我曾尝试使用 .filter 函数,但出现错误:filter is not a function 我认为这是因为这不是数组。我试图在这里使用答案进行复制:

How to filter deeply nested json by multiple attributes with vue/javascript

没有成功,因为 json 有一个键 (51, 55, 88) 所以我很难过。

提前感谢您的帮助。

【问题讨论】:

【参考方案1】:

您可以使用Object.values 将对象转换为数组,然后对其使用find 方法来检索特定对象。比如:

Object.values(obj).find(val => val.id === 33)?.wheels

let obj = 
  "51": 
    "wheels": 10,
    "id": 1,
    "name": "truck"
  ,
  "55": 
    "wheels": 4,
    "id": 33,
    "name": "Car"
  ,
  "88": 
    "wheels": 2,
    "id": 90,
    "name": "Bike"
  


console.log(Object.values(obj).find(val => val.id === 33)?.wheels)

【讨论】:

以上是关于使用 Vue 过滤以检索嵌套对象中的特定值的主要内容,如果未能解决你的问题,请参考以下文章

如何从 KeyValue 管道中过滤特定值以显示在 html 表中的特定标题下 |角 6 +

如何使用映射或过滤器而不是列表推导过滤特定值的嵌套字典(pythonic 方式)?

HiveQL:如何编写查询以根据嵌套的 JSON 数组值选择和过滤记录

JQ 过滤嵌套对象中的字段

Spring数据mongodb过滤字符串集合中的嵌套对象ID

如果 MongoDB 中的条件用于嵌套 JSON 以检索特定值