ปัญหา
เราต้องเขียนฟังก์ชัน 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)