【发布时间】:2021-11-15 03:20:36
【问题描述】:
我有一组嵌套对象,其中一个看起来像这样(我压缩了整个对象,因为它太大了,jsonArr[0].data 是对象所在的位置):
var jsonArr = {
"data": [{
"id": 5201,
"name": "Simple Engineering",
"contracts": [{
"id": 461,
"contract_type_id": 99,
"contract_status_id": null,
"pivot": {
"entity_id": 5201,
"contract_id": 461
},
"projects": [{
"id": 2785,
"name": "Something Hydro",
"pivot": {
"contract_id": 461,
"project_id": 2785
}
}]
}]
}]
}
我还有另一个值数组:
var ids = [461,452,478,655]
我正在尝试找出一种方法将ids 中的值与data.contracts.id 中的值相匹配。如果一个值匹配,那么我想检索data.name 和projects.id。
所以在这种情况下,结果将是一个如下所示的数组,因为只有 461 匹配:
var names = ["Simple Engineering",2785]
我希望这是有道理的。当我正在处理一个由多个对象组成的数组时,我需要一种迭代每个 ids 值和每个数组对象的方法。谢谢,感谢您的帮助。
【问题讨论】:
-
提供的数据结构已损坏 ...
jsonArr是一个对象,然后必须编写代码 ...const jsonArr = { "data": [ /* ... */ ] };或者它确实是一个数组,那么基本结构需要是喜欢...const jsonArr = [ { "data": [ /* ... */ ] }, { "data": [ /* ... */ ] } /* ,.. */ ];。对于 OP,实际处理的是哪种结构? -
btw ... 没有像 JSON 数组或 JSON 对象这样的东西。 JSON 是一种基于字符串的数据交换格式。 OP 确实提供的是嵌套对象文字(语法)的无效尝试。
-
3rd ... OP 是否在寻找通用方法?...原因来自提供的示例和
461的匹配值不仅contracts项目的id匹配但 OP 还希望从projects项目的pivot匹配contract_id而projects项目自己的id不一定需要匹配。 -
@PeterSeliger 我已经编辑了我的示例数据。它应该是一个对象。
-
很抱歉,但我不确定我理解您所说的通用方法是什么意思?
标签: javascript arrays object iterator