繁体   English   中英

你能帮我一个算法吗?

[英]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.

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