Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Javascript

แปลงอาร์เรย์ด้วยค่าที่ซ้ำกันเป็นวัตถุที่มีจำนวนครั้งที่เกิดซ้ำใน JavaScript


สมมติว่าเรามีสตริงอาร์เรย์ที่มีรายการที่ซ้ำกันเช่นนี้ -

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 }
]