首页 > 解决方案 > 基于 ID 是否在嵌套对象中从 JSON 对象访问值

问题描述

我有一个 json 对象嵌套在父 json 对象的参数中。我正在尝试根据子对象的 ID 字段中是否存在 ID 来访问父级的属性。

JSON结构如下:

{
    id: 1,
    map: "test",
    parameter_definitions: [{ID: 1, parameterUnits: "%"},{ID: 2, parameterUnits: "%"}],
},
{
    id: 2,
        map: "test2",
    parameter_definitions: [{ID: 3, parameterUnits: "%"},{ID: 4, parameterUnits: "%"}],
}

我需要返回的值是正确的 json 对象的映射,基于我的给定值是否是 parameter_definitions 对象中的 ID 之一。我似乎无法理解这是由什么组成的。

标签: javascriptjson

解决方案


不幸的是,你的问题不是很清楚。这是你想要的?

// const objectScan = require('object-scan');

const myData = [{ id: 1, map: 'test', parameter_definitions: [{ ID: 1, parameterUnits: '%' }, { ID: 2, parameterUnits: '%' }] }, { id: 2, map: 'test2', parameter_definitions: [{ ID: 3, parameterUnits: '%' }, { ID: 4, parameterUnits: '%' }] }];

const getRootElement = (data, id) => objectScan(['[*].parameter_definitions[*].ID'], {
  abort: true,
  filterFn: ({ value, parents, context }) => {
    if (value === id) {
      context.push(...parents);
      return true;
    }
    return false;
  }
})(data, [])[2];

console.log(getRootElement(myData, 5));
// => undefined

console.log(getRootElement(myData, 3));
// => { id: 2, map: 'test2', parameter_definitions: [ { ID: 3, parameterUnits: '%' }, { ID: 4, parameterUnits: '%' } ] }
.as-console-wrapper {max-height: 100% !important; top: 0}
<script src="https://bundle.run/object-scan@13.8.0"></script>

免责声明:我是对象扫描的作者


推荐阅读