React javascript 两个对象数组,我想按键查找和过滤,结果,我想用另一个键计数

React javascript two arrays of objects,I want to find and filter by key, and the result of this, I want to count by another key

我有两个对象数组(resultsSchoolsRegioninfoCovBySchool)。有一个公用密钥(codi_centrecodcentre)。我需要在 infoCovBySchool 中查找并过滤所有 resultsSchoolsRegioncodcentre 匹配的内容。 查找和过滤后,根据这些结果,我想按键 estat === 'Confinat' 来计算所有学校。我有一个错误“无法读取未定义的 属性 'estat'”

我的代码

const resultsSchoolsRegion = [
  {
    codi_centre: "43000433",
    denominaci_completa: "Escola Sant Miquel",
    adre_a: "c. Sant Miquel, s/n"
  },
  {
    codi_centre: "43000561",
    denominaci_completa: "Escola Antoni Nat - ZER Benissanet-Miravet",
    adre_a: "c. Reus, s/n"
  },
  {
    codi_centre: "43001280",
    denominaci_completa: "Escola Pàmies - ZER La Font de l'Aiguadí",
    adre_a: "c. Riu, 9"
  },
  {
    codi_centre: "43001681",
    denominaci_completa: "Escola Lluís Viñas i Viñoles",
    adre_a: "c. Mestres, 7"
  },
  {
    codi_centre: "43005479",
    denominaci_completa: "Escola 1 d'Abril - ZER Ebre",
    adre_a: "c. Major, s/n"
  },
  {
    codi_centre: "43011248",
    denominaci_completa: "Llar d'infants La Morera",
    adre_a: "c. Santiago Rusiñol, 22"
  },
  {
    codi_centre: "43011972",
    denominaci_completa: "Llar d'infants La Torre de l'Espanyol",
    adre_a: "c. de l'Era, s/n"
  },
  {
    codi_centre: "43012630",
    denominaci_completa: "Llar d'infants Els Figotets",
    adre_a: "c. Reus, 3"
  }
];

const infoCovBySchool = [
  {
    codcentre: "43000433",
    estat: "Obert",
    grup_confin: "0"
  },
  {
    codcentre: "43000561",
    estat: "Obert",
    grup_confin: "0"
  },
  {
    codcentre: "43001280",
    estat: "Obert",
    grup_confin: "0"
  },
  {
    codcentre: "43001681",
    estat: "Obert",
    grup_confin: "0"
  },
  {
    codcentre: "43005479",
    estat: "Confinat",
    grup_confin: "0"
  }
];

const api = {
  async getInfoMapSchoolsRegions(query) {
    try {
      let totalCovidRegion = 0;
      resultsSchoolsRegion.map(school => {
        let filterResults = infoCovBySchool.find(item => {
          return item.codcentre === school.codi_centre;
        });

        if (
          filterResults.estat !== undefined &&
          filterResults.estat === "Confinat"
        ) {
          totalCovidRegion += 1;
        }
      });
      return { totalCovidRegion };
    } catch (error) {
      throw error;
    }
  }
};
export default api;

在某些情况下,infoCovBySchool.find(...) 函数找不到匹配的学校。在那种情况下 filterResultsundefined.

在您的 estat-check 中,您正在检查 filterResults.estat 是否为 undefined。但是由于 filterResults 本身已经是 undefined,代码无法访问 属性 estat.

因此,您的解决方法是改为检查 filterResults !== undefined

这里是完整的函数:

const api = {
  async getInfoMapSchoolsRegions(query) {
    try {
      let totalCovidRegion = 0;
      resultsSchoolsRegion.map((school) => {
        let filterResults = infoCovBySchool.find((item) => {
          return item.codcentre === school.codi_centre;
        });
        if (filterResults !== undefined && filterResults.estat === "Confinat") {
          totalCovidRegion += 1;
        }
      });
      return { totalCovidRegion };
    } catch (error) {
      throw error;
    }
  },
};