首页 > 解决方案 > 在javascript中过滤嵌套对象

问题描述

我在另一个对象中有这个对象,我需要过滤它们以获取没有脱机状态的对象。

我需要通过具有“可用”状态的模进行过滤,并尝试使用地图来实现这一点,但这会导致地图不是函数的错误。我尝试使用过滤器,但这并没有给我正确的结果。我也尝试过使用 Object.keys,但没有得到我需要工作的结果。

如何过滤嵌套对象?

{
  demo: {
    modulos: {
     demo1: {
        state": "offline",
      },
      demo2: {
        state": "available",
      },
    }
  }

  official: {
    modulos: {
      official1: {
        state: "offline",
      },
      official2: {
        state: "available",
      },
    }
  }
}

标签: javascript

解决方案


您可以使用减少

const object = {
  demo: {
    modulos: {
      demo1: {
        state: "offline",
      },
      demo2: {
        state: "available",
      },
    }
  },
  official: {
    modulos: {
      official1: {
        state: "offline",
      },
      official2: {
        state: "available",
      },
    }
  }
};

const filteredObject = Object.keys(object).reduce((acc, outerProp) => {
  Object.keys(object[outerProp].modulos).forEach((innerProp) => {
    if (object[outerProp].modulos[innerProp].state !== 'offline') {
      acc[outerProp] = {
        modulos: {
          [innerProp]: object[outerProp].modulos[innerProp]
        }
      }
    }
  });

  return acc;
}, {});

console.log(filteredObject);


推荐阅读