繁体   English   中英

无法在两个嵌套的 arrays 之间进行交集

[英]Cannot make intersection between two nested arrays

我正在使翻译动态化,但是当我必须从另一个数组中显示相应的 object 时,我在这方面很挣扎。

我有两个 arrays,它们具有相同的 model,我想要做的是,当我搜索翻译时,我还想显示其他语言的相应翻译。

目前,我只能显示您正在搜索的那个。

例如:如果我搜索句子你确定吗? ,除了你确定吗? 句子,它还应该显示来自其他列语言的相应句子。

这是一个带有示例的片段: https://codesandbox.io/s/poliished-smoke-n6w6i?file=/src/App.js

任何帮助将不胜感激。 先感谢您!

逻辑是通过它们的id而不是它们的来过滤选定的语言项。 id取自默认语言项。

这是如何

const searchByresourceId = (targetLng, selectedResources) => {
  // get the default language item id
  const ids = selectedResources.map(({languageResources}) => languageResources.map(({id}) => id)).flat();

  return targetLng
    ?.map((item) => {
      const languageResources = item.languageResources.filter(
        (namespace) =>
          ids.includes(namespace.id)
      );
      return {
        ...item,
        languageResources
      };
    })
    .filter((item) => item.languageResources.length > 0);
}

Ans你应该改变你设置state的方式

const searchByresourceId = (targetLng, selectedResources) => {
  const ids = selectedResources.map(({languageResources}) => languageResources.map(({id}) => id)).flat();
  return targetLng
    ?.map((item) => {
      const languageResources = item.languageResources.filter(
        (namespace) =>
          ids.includes(namespace.id)
      );
      return {
        ...item,
        languageResources
      };
    })
    .filter((item) => item.languageResources.length > 0);
}

https://codesandbox.io/s/cranky-ellis-ccdhx?file=/src/App.js

代码当然没有优化,我只是演示了逻辑

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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