javascript - 如何在嵌套对象中搜索值并检索父值?
问题描述
我有一个嵌套对象数组,其中一个看起来像这样(我已经压缩了整个对象,因为它太大了,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
and projects.id
。
所以在这种情况下,结果将是一个如下所示的数组,仅461
匹配:
var names = ["Simple Engineering",2785]
我希望这是有道理的。当我正在处理一个由多个对象组成的数组时,我需要一种迭代每个ids
值和每个数组对象的方法。谢谢,我很感激任何帮助。
解决方案
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]
var names=[]
var matched = jsonArr.data?.map(d=>d?.contracts?.map(con=>con?.projects?.map(proj=>{
if(proj?.pivot?.contract_id===ids.find(id=>id===proj?.pivot?.contract_id))
{
names.push(d?.name)
names.push(proj?.pivot?.project_id)
}
})))
console.log(names)
var names=[]
var matched = jsonArr.map(jArr=>jArr?.data?.map(d=>d?.contracts?.map(con=>con?.projects?.map(proj=>{
if(proj?.pivot?.contract_id===ids.find(id=>id===proj?.pivot?.contract_id))
{
names.push(d?.name)
names.push(proj?.pivot?.project_id)
}
}))))
console.log(names)
推荐阅读
- controls - 具有不同时间的多个日历
- php - 将句子单词数组转换为flare.json格式
- angular - 限制用户输入前两个字符为字母而不是数字
- php - Twilio 响应 dateSent 属性 null
- machine-learning - 使用 Tanh 进行梯度下降,错误分类时梯度为 0?
- r - 如何根据r中的X值更改折线图颜色
- mysql - 我想按 pv.name 对下面的 SQL 查询进行分组,这会给出错误。有什么选择吗?
- python - 欧拉计划 #5,Python
- python - Python - 来自 Dataframe 的 Seaborn “Dodged” Barch 图
- python - Python:按时间和空间分组