เราจำเป็นต้องเขียนฟังก์ชัน JavaScript ที่รับอาร์เรย์ของตัวเลขจำนวนเท่าใดก็ได้ จากนั้นฟังก์ชันควรส่งคืนอ็อบเจ็กต์ที่ส่งคืนแผนที่ความถี่ซึ่งระบุจำนวนครั้งที่แต่ละองค์ประกอบปรากฏขึ้นเพื่อตรวจสอบอาร์เรย์ทั้งหมด
ตัวอย่างเช่น ถ้าอาร์เรย์เป็น −
const a = [23, 45, 21], b = [45, 23], c = [21, 32], d = [23], e= [32], f=[50, 54];
จากนั้นผลลัพธ์ควรเป็น −
const output = { "21": 2, "23": 3, "32": 2, "45": 2, "52": 1, "54": 1, "23, 45": 2, "23, 45, 21": 1, "21, 32": 1, "50 : 54": 1, "50" : 1 }
ตัวอย่าง
รหัสสำหรับสิ่งนี้จะเป็น −
const a = [23, 45, 21], b = [45, 23], c = [21, 32], d = [23], e= [32], f=[50, 54]; const findMatch = arr => { let result = []; const pick = (i, t) => { if (i === arr.length) { t.length && result.push(t); return; }; pick(i + 1, t.concat(arr[i])); pick(i + 1, t); }; pick(0, []); return result; }; const sorter = (a, b) => a - b; const mergeCombination = (arr, obj) => { findMatch(arr.sort(sorter)).forEach(el => { return obj[el.join(', ')] = (obj[el.join(', ')] || 0) + 1 }); }; const buildFinalCombinations = (...arrs) => { const obj = {}; for(let i = 0; i < arrs.length; i++){ mergeCombination(arrs[i], obj); }; return obj; }; console.log(buildFinalCombinations(a, b, c, d, e, f));
ผลลัพธ์
เอาต์พุตในคอนโซล −
{ '21': 2, '23': 3, '32': 2, '45': 2, '50': 1, '54': 1, '21, 23, 45': 1, '21, 23': 1, '21, 45': 1, '23, 45': 2, '21, 32': 1, '50, 54': 1 }