遍历对象数组

时间:2020-06-15 09:02:44

标签: javascript arrays recursion

我需要遍历对象数组,直到子项键中包含值。

数组中的每个对象都有一个单独的子数组,我需要检查每个对象中是否存在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
  }
];

1 个答案:

答案 0 :(得分:2)

您可以使用此递归函数:

const findMissing = data => (data || []).flatMap(item => 
    ("timeGroupName" in item ? [] : [item.id]).concat(findMissing(item.children)) 
);

这将返回一个数组,其中包含不具有“ timeGroupName”属性的所有对象的ID值。在您的示例中,所有对象都具有它,因此上述函数将为此返回[]