首页 > 解决方案 > 如何从返回的对象中获取 JSON 条目

问题描述

我得到了 JSON 数据,例如:

{ 
  "id": 1,
  "active": true,
  "dependency": [
        { "id": 2 }
        { "id": 3 }
   ]
},
{
  "id": 2,
  "active": true
},
{
  "id": 3,
  "active": true
}

我想检索id 1对象中每个依赖项的“活动”值。到目前为止,我使用 forEach 来获取这些依赖项。

thisElement.dependency.forEach(function(id) {
           console.log(id)
}

哪个返回id 2 and id 3 as objects。有没有id.active直接使用的方法?只使用一个循环?因为到目前为止的结果是与相关 JSON 数据没有任何连接的对象。是否需要遍历整个 JSON 数据来检索这些值?

标签: javascriptjson

解决方案


最有效的方法是首先使用 Object 或 Map 创建一个 hashmap,因此您只需要迭代一次数组即可找到与依赖项相关的值。

您可以通过Array#find()每次使用来搜索整个数组来做到这一点,但这比 o(1) 对象查找的时间复杂度要高得多

const activeMap = new Map(data.map(obj  => [obj.id, obj.active]))

data[0].dependency.forEach(({id}) => console.log(id ,'  active: ' , activeMap.get(id)))
<script>
const data =
[
  {
    "id": 1,
    "active": true,
    "dependency": [
      {"id": 2 },
      {"id": 3}
    ]
  },
  {
    "id": 2,
    "active": false
  },
  {
    "id": 3,
    "active": true
  }
]
</script>


推荐阅读