我需要遍历对象数组,直到子项键中包含值。
数组中的每个对象都有一个单独的子数组,我需要检查每个对象中是否存在timeGroupName
。
最后,如果在任何对象中缺少timeGroupName
,则返回某些内容以指示timeGroupName
不存在。我想在这里使用递归。
样本对象:
[
{
name: "vimlesh",
timeGroupName: "NupurGroup",
type: "node",
id: 1592208617196,
children: [
{
name: "sid",
timeGroupName: "NupurGroup",
type: "node",
id: 1592210050837,
children: [
{
name: "rush",
timeGroupName: "NupurGroup",
type: "node",
id: 1592210076303,
children: []
},
{
name: "1",
timeGroupName: "NupurGroup",
type: "store",
storeId: "5c46e5fde6d3c2293e1f53b6",
id: 1592210057381,
children: []
}
],
collapsedStore: false,
collapsedGroup: false
}
],
collapsedGroup: false
}
];
答案 0 :(得分:2)
您可以使用此递归函数:
const findMissing = data => (data || []).flatMap(item =>
("timeGroupName" in item ? [] : [item.id]).concat(findMissing(item.children))
);
这将返回一个数组,其中包含不具有“ timeGroupName”属性的所有对象的ID值。在您的示例中,所有对象都具有它,因此上述函数将为此返回[]
。