簡體   English   中英

如何在Javascript中獲取另一個數組中某個數組元素的數字出現次數?

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM