首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何获取Javascript中另一个数组中数组中任何元素的出现数?

如何获取Javascript中另一个数组中数组中任何元素的出现数?
EN

Stack Overflow用户
提问于 2019-07-19 20:09:53
回答 1查看 84关注 0票数 1

我有一个数组:

代码语言:javascript
复制
const myArray1 = [{tags: ['tag-1', 'tag-2']}, {tags: ['tag-1']}, {tags: ['tag-5', 'tag-8']}]

和一个array2:

代码语言:javascript
复制
const myArray2 = [
  {
    tags: [
       "tag-122",
      "tag-1",
      "tag-2",
      "tag-12"
    ]
  },
  {
    tags: [
      "tag-1",
      "tag-10",
      "tag-12"
    ]
  },
  {
    tags: [
      "tag-5"
    ]
  }
];

我想要一个数组

代码语言:javascript
复制
const resultArray = [{tags: ['tag-1', 'tag-2'], count: 2}, {tags: ['tag-1'], count: 2}, {tags: ['tag-5', 'tag-8'], count: 1}]

对于myArray1中的每个元素,检查myArray1中的任何数组标记元素是否包含在myArray2中。如果包含,则查找出现次数的计数。

我尝试创建一个myArray2标记数组,然后为myArray1的每个元素在数组中找到出现的情况。

代码语言:javascript
复制
const result = myArray2.reduce((acc, el) => {
  el.tags && el.tags.map(tag => acc.push(tag));
  return acc;
}, []);
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-07-19 20:16:48

为了降低计算复杂度,我会将myArray2转换成一个集合数组,然后.map array2并检查正在迭代的标记的.some是否存在于集合中,并计算reduce出现的次数。

代码语言:javascript
复制
const myArray1=[{tags:["tag-1","tag-2"]},{tags:["tag-1"]},{tags:["tag-5","tag-8"]}],
      myArray2=[{tags:["tag-122","tag-1","tag-2","tag-12"]},{tags:["tag-1","tag-10","tag-12"]},{tags:["tag-5"]}];

const arr2Sets = myArray2.map(({ tags }) => new Set(tags));

const resultArray = myArray1.map(({ tags }) => {
  const count = arr2Sets.reduce(
    (a, set) => a + tags.some(tag => set.has(tag)),
    0
  );
  return { tags, count };
});
console.log(resultArray);

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57119091

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档