สมมติว่าเรามีสตริงอาร์เรย์ที่มีรายการที่ซ้ำกันเช่นนี้ -
const arr = ['California','Texas','Texas','Texas','New York','Missouri','New Mexico','California'];
เราจำเป็นต้องเขียนฟังก์ชัน JavaScript ที่รับอาร์เรย์ดังกล่าว ฟังก์ชันของเราควรสร้างอาร์เรย์ของอ็อบเจ็กต์ที่มีอ็อบเจ็กต์สำหรับแต่ละรายการที่ไม่ซ้ำ และคุณสมบัติ "นับ" ที่มีการนับในอาร์เรย์ดั้งเดิม
ดังนั้น ผลลัพธ์สุดท้ายของอาร์เรย์ด้านบนควรมีลักษณะดังนี้ −
const output = [ {'name':'California', 'count':2}, {'name':'Texas', 'count':3}, {'name':'New York', 'count':1}, {'name':'Missouri', 'count':1}, {'name':'New Mexico', 'count':1}, ];
ตัวอย่าง
รหัสสำหรับสิ่งนี้จะเป็น −
const arr = ['California','Texas','Texas','Texas','New York','Missouri','New Mexico','California']; const findOccurrences = (arr = []) => { const res = []; arr.forEach(el => { const index = res.findIndex(obj => { return obj['name'] === el; }); if(index === -1){ res.push({ "name": el, "count": 1 }) } else{ res[index]["count"]++; }; }); return res; }; console.log(findOccurrences(arr));
ผลลัพธ์
และผลลัพธ์ในคอนโซลจะเป็น −
[ { name: 'California', count: 2 }, { name: 'Texas', count: 3 }, { name: 'New York', count: 1 }, { name: 'Missouri', count: 1 }, { name: 'New Mexico', count: 1 } ]