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
我有两个对象数组(resultsSchoolsRegion
和 infoCovBySchool
)。有一个公用密钥(codi_centre
和 codcentre
)。我需要在 infoCovBySchool
中查找并过滤所有 resultsSchoolsRegion
与 codcentre
匹配的内容。
查找和过滤后,根据这些结果,我想按键 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(...)
函数找不到匹配的学校。在那种情况下 filterResults
是 undefined
.
在您的 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;
}
},
};
我有两个对象数组(resultsSchoolsRegion
和 infoCovBySchool
)。有一个公用密钥(codi_centre
和 codcentre
)。我需要在 infoCovBySchool
中查找并过滤所有 resultsSchoolsRegion
与 codcentre
匹配的内容。
查找和过滤后,根据这些结果,我想按键 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(...)
函数找不到匹配的学校。在那种情况下 filterResults
是 undefined
.
在您的 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;
}
},
};