[英]find in array of objects with nested array of objects with multiple property name and value
我有这样的对象数组
[{
property1: 'test',
property2: 'test',
filter: [{
fil1: 1,
fil2: 2,
fil3: 3
},
{
fil1: 56,
fil2: 3,
fil3: 34
},
{
fil1: 23,
fil2: 88,
fil3: 6
}
]
},
{
property1: 'test2',
property2: 'test2',
filter: [{
fil1: 44,
fil2: 5,
fil3: 99
},
{
fil1: 333,
fil2: 7,
fil3: 888
},
{
fil1: 10,
fil2: 5,
fil3: 688
}
]
}
]
如您所见,我有两个对象。 每个 object 都有带对象的嵌套数组。 如果我在嵌套对象数组中搜索一些属性,我想获得 main object。
例如fil1:56,fil2:3,我需要在第一场比赛中获得第一个主要的object。 但有窍门。 嵌套对象内的属性名称是动态的,有时我需要通过一个属性或 5 个属性进行搜索。 我像这样搜索 object
{
fil2: 2,
fil3: 3
}
输入此搜索 object 将返回数组中的第一个主要 object。
data.find((el) => el.filter.some((el_n) => !Object.entries(search).some(([key, value]) => el_n[key] != value)));
其中data
是可搜索的对象数组, search
是搜索 object。这将从data
中返回第一个匹配的 object。
这将适用于filter
数组元素内或搜索 object 中的任意数量的键。
例如:
{
fil1: 5,
fil2: 5,
fil3: 686,
fil4: 686,
search_by_this_key: 34,
...
}
在大型数据集上过滤 arrays 客户端会影响性能,在这种情况下,您可能需要查看后端解决方案。
✌
我不确定我会回答你的问题,但我会尝试。 无论如何,您能否提供有关该问题的更多详细信息? 例如,属性是“动画的”是什么意思?
好的...在您的示例中,数组中有 2 个元素,因此firstindex可以是 0 或 1。每个元素都是一个具有 3 个键 ( key1 ) 的字典:property1、property2、filter。 filter 是一个包含 3 个字典( secondindex )的数组:0,1 和 2 这些最后的字典每个有 3 个键/值( key2 ):fil1,fil2,fil3
# Model: array_name[firstindex][key1][secondindex][key2]
array_name[0]["property1"]
array_name[0]["property2"]
array_name[0]["filter"]
array_name[0]["filter"][1]
array_name[0]["filter"][1]["fil2"]
您可以通过打印在您的代码中尝试:
print(array_name[0]["property1"],
array[0]["property2"],
array[0]["filter"],
array[0]["filter"][1],
array[0]["filter"][1]["fil2"])
并迭代一个for循环
祝你好运!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.