[英]How to get number occurrences of any element of an array in another array in Javascript?
我有一个数组:
const myArray1 = [{tags: ['tag-1', 'tag-2']}, {tags: ['tag-1']}, {tags: ['tag-5', 'tag-8']}]
和一个array2:
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标签数组,然后为myArray1的每个元素在数组中查找
const result = myArray2.reduce((acc, el) => {
el.tags && el.tags.map(tag => acc.push(tag));
return acc;
}, []);
我将myArray2
转换为Set数组以降低计算复杂度,然后.map
the array2
并检查.some
中是否存在一些被迭代的标签,并用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 }) => { const count = arr2Sets.reduce( (a, set) => a + tags.some(tag => set.has(tag)), 0 ); return { tags, count }; }); console.log(resultArray);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.