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

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

สมมติว่ามีอาร์เรย์ของออบเจ็กต์ดังนี้:

const arr = [
  {
    "Country": "BR",
    "New Lv1-Lv2": "#N/A"
  },
  {
    "Country": "BR",
    "New Lv1-Lv2": "#N/A"
  },
  {
    "Country": "",
    "New Lv1-Lv2": "test"
  }
];

เราต้องเขียนฟังก์ชัน JavaScript ที่รับอาร์เรย์ของออบเจ็กต์ดังกล่าว ฟังก์ชันสร้างและคืนค่าอาร์เรย์ใหม่ที่ไม่มีออบเจ็กต์ซ้ำกัน (โดย "ซ้ำ" หมายถึงออบเจ็กต์ที่มีค่า "Country" เหมือนกัน)

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

ตัวอย่าง

โค้ดสำหรับนี้จะเป็นดังนี้:

const arr = [
  {
    "Country": "BR",
    "New Lv1-Lv2": "#N/A"
  },
  {
    "Country": "BR",
    "New Lv1-Lv2": "#N/A"
  },
  {
    "Country": "",
    "New Lv1-Lv2": "test"
  }
];

const convert = (arr) => {
  const res = {};
  arr.forEach((obj) => {
    const key = `${obj.Country}${obj["New Lv1-Lv2"]}`;
    if (!res[key]) {
      res[key] = { ...obj, count: 0 };
    };
    res[key].count += 1;
  });
  return Object.values(res);
};

console.log(convert(arr));

ผลลัพธ์

ผลลัพธ์ในคอนโซลจะเป็นดังนี้:

[
  { Country: 'BR', 'New Lv1-Lv2': '#N/A', count: 2 },
  { Country: '', 'New Lv1-Lv2': 'test', count: 1 }
]