[英]Can you help me with an algorithm?
我得到了一些嵌套数据,我需要过滤掉这些数据,但我无法绕过所有这些循环。 我会很高兴得到帮助。
我得到的数据:
const data = [
{
categories: [{ name: "street" }, { name: "portrait" }],
photo: { childImageSharp: { fluid: "values" } },
},
{
categories: [{ name: "street" }],
photo: { childImageSharp: { fluid: "values" } },
},
{
categories: [{ name: "portrait" }],
photo: { childImageSharp: { fluid: "values" } },
},
{
categories: [{ name: "street" }, { name: "architecture" }],
photo: { childImageSharp: { fluid: "values" } },
},
{
categories: [{ name: "architecture" }],
photo: { childImageSharp: { fluid: "values" } },
},
{
categories: [{ name: "street" }],
photo: { childImageSharp: { fluid: "values" } },
},
];
照片列表,每张照片都有一张照片 object和源,我将使用它来渲染元素以及包含名称和字符串值的对象数组。
我想只过滤掉包含类别名称“肖像”的照片。 因此,我需要创建一个新数组,仅使用符合我的条件的这些结果进行过滤。
我试过的:
const filtered = data.map((photo) => photo.categories.filter((category) => category.name.includes("portrait")));
我得到了什么:
const result = [
[{name: "portrait"}],
[],
[{name: "portrait"}],
[],
[],
[]
]
我想得到什么:
const result = [
{
categories: [{ name: "street" }, { name: "portrait" }],
photo: { childImageSharp: { fluid: "values" } },
},
{
categories: [{ name: "portrait" }],
photo: { childImageSharp: { fluid: "values" } },
}
]
不要使用map
只使用filter
const data = [ { categories: [{ name: "street" }, { name: "portrait" }], photo: { childImageSharp: { fluid: "values" } }, }, { categories: [{ name: "street" }], photo: { childImageSharp: { fluid: "values" } }, }, { categories: [{ name: "portrait" }], photo: { childImageSharp: { fluid: "values" } }, }, { categories: [{ name: "street" }, { name: "architecture" }], photo: { childImageSharp: { fluid: "values" } }, }, { categories: [{ name: "architecture" }], photo: { childImageSharp: { fluid: "values" } }, }, { categories: [{ name: "street" }], photo: { childImageSharp: { fluid: "values" } }, }, ]; const result = data.filter( x => x.categories.some(c => c.name == "portrait")); console.log(result);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.