javascript - 基于 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 之一。我似乎无法理解这是由什么组成的。
解决方案
不幸的是,你的问题不是很清楚。这是你想要的?
// 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>
免责声明:我是对象扫描的作者
推荐阅读
- javascript - javascript发送跨域表单请求
- azure - Azure Gov Cloud 和 Azure 公共云上的 Azure SQL Server VM 之间的跨数据库查询
- firebase - 使用 FIrebase onSnapshot() 函数在 Vue 异步中合并两个集合
- python-3.x - ffmpeg 仍然无法在 heroku [discord.py] 上工作
- c# - 预先初始化属性未知的嵌套成员
- reactjs - tinymce 所见即所得编辑器 - 文本光标问题,文本字段/区域变为非活动状态
- r - ggplot2:使用条形图和 stat = 'identity' 时 y 轴上的值不正确
- node.js - 发布请求适用于我的本地计算机,但不适用于远程服务器
- python - 您可以从 codeigniter 控制器中的函数执行 Python 脚本吗
- c - realloc 行为的可移植性