繁体   English   中英

遍历 javascript 中的嵌套对象数组

[英]iterating through nested array of objects in javascript

我有以下需要迭代的数据。

数据结构

我想出了以下原始解决方案来循环并获取我需要的数据,不确定这是否是这样做的最佳方式,有没有办法加快速度或只是改进解决方案?

 Object.entries(data[0]).forEach(([key, value]) => {
  for (const [key, test] of Object.entries(value)) {
    for (const [key, properties] of Object.entries(test.properties)) {
      for (const [keys, prop] of Object.entries(properties)) {
         console.log(prop);
      }
    }
    for (const [bestkeys, provisions] of Object.entries(test.provisions)) {
         //console.log(provisions);
    }
  }
});

如果您需要遵循特定的模式,那么明确说明您的模式通常是 go 的最佳方式,尤其是对于这种不太复杂的模式。 我重写了您的示例,但使用.values而不是.entries因为您只使用了这些值。

Object.values(data[0]).forEach(val => {
  Object.values(val).forEach(test => {
    Object.values(test).forEach(property => {
      Object.values(property).forEach(prop => {
        console.log(prop);
      });
    });
    Object.values(test.provisions).forEach(provisions => {
      console.log(provisions);
    });
  });
});

但是,如果您只需要遍历所有分支并记录所有最深级别的值,您也可以使用递归逻辑。 IE

function logDeepestNestedValue(obj) {
  if (typeof obj === "object") {
    const values = Object.values(obj);
    values.forEach(logDeepestNestedValue);
  } else {
    console.log(obj);
  }
}
logDeepestNestedValues(data[0]);

查看您的图像,我注意到 test.provisions 可能是一个数组而不是 object,在这种情况下,您不想在其上调用Object.values ,而是可以只使用.forEach或直接使用for of循环来记录内容那里。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM