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

如何在Javascript中获取数组中任何元素在另一个数组中的出现次数?,javascript,arrays,reduce,Javascript,Arrays,Reduce,我有一个数组: const myArray1 = [{tags: ['tag-1', 'tag-2']}, {tags: ['tag-1']}, {tags: ['tag-5', 'tag-8']}] 和一个数组2: const myArray2 = [ { tags: [ "tag-122", "tag-1", "tag-2", "tag-12" ] }, { tags: [ "tag-1",

我有一个数组:

const myArray1 = [{tags: ['tag-1', 'tag-2']}, {tags: ['tag-1']}, {tags: ['tag-5', 'tag-8']}]
和一个数组2:

const myArray2 = [
  {
    tags: [
       "tag-122",
      "tag-1",
      "tag-2",
      "tag-12"
    ]
  },
  {
    tags: [
      "tag-1",
      "tag-10",
      "tag-12"
    ]
  },
  {
    tags: [
      "tag-5"
    ]
  }
];
我想要一个数组

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中每个元素的引用

const result = myArray2.reduce((acc, el) => {
  el.tags && el.tags.map(tag => acc.push(tag));
  return acc;
}, []);

我将
myArray2
转换为一个集合数组以降低计算复杂度,然后
映射
array2
并检查
。正在迭代的一些标记是否存在于集合中,使用
reduce
计算出现的次数:

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})=>{
常数计数=arr2Sets.reduce(
(a,set)=>a+tags.some(tag=>set.has(tag)),
0
);
返回{tags,count};
});
console.log(resultArray)