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

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

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

const arr = ['California','Texas','Texas','Texas','New York','Missouri','New Mexico','California'];

เราต้องเขียนฟังก์ชัน JavaScript ที่รับอาร์เรย์ดังกล่าว ฟังก์ชันควรสร้างอาร์เรย์ของออบเจ็กต์ที่มีออบเจ็กต์สำหรับแต่ละรายการที่ไม่ซ้ำกันและคุณสมบัติ "count" ที่มีจำนวนในอาร์เรย์ต้นฉบับ

ดังนั้น ผลลัพธ์สุดท้ายสำหรับอาร์เรย์ข้างต้นควรเป็นดังนี้:

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