Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> JavaScript

ความถี่ของสมาชิกอาร์เรย์หนึ่งที่ปรากฏในอีกอาร์เรย์หนึ่งใน JavaScript

ปัญหา

เราต้องเขียนฟังก์ชัน JavaScript ที่รับสองอาร์เรย์ของสตริง ฟังก์ชันควรคืนค่าจำนวนครั้งที่แต่ละสตริงของอาร์เรย์ที่สองปรากฏในอาร์เรย์แรก

ตัวอย่าง

โค้ดตัวอย่างด้านล่าง:

const arr1 = ['abc', 'abc', 'xyz', 'cde', 'uvw'];
const arr2 = ['abc', 'cde', 'uap'];
const findFrequency = (arr1 = [], arr2 = []) => {
  const res = [];
  let count = 0;
  for (let i = 0; i < arr2.length; i++) {
    for (let j = 0; j < arr1.length; j++) {
      if (arr2[i] === arr1[j]) {
        count++;
      }
    }
    res.push(count);
    count = 0;
  }
  return res;
};
console.log(findFrequency(arr1, arr2));

ผลลัพธ์

[2, 1, 0]

คำอธิบายเพิ่มเติม

arr2: 'abc' ปรากฏใน arr1 2 ครั้ง, 'cde' 1 ครั้ง, 'uap' 0 ครั้ง โค้ดใช้ nested loop O(n×m) สามารถปรับปรุงได้ด้วย Map/Object นับความถี่ arr1 ก่อน แล้ว lookup O(1)