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 ที่รับอาร์เรย์ของอ็อบเจ็กต์ดังกล่าว ฟังก์ชันสร้างและส่งกลับอาร์เรย์ใหม่ที่ไม่มีการทำซ้ำวัตถุ (โดยการทำซ้ำเราหมายถึงวัตถุที่มีค่าเท่ากันสำหรับคุณสมบัติ "ประเทศ")

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

ตัวอย่าง

รหัสสำหรับสิ่งนี้จะเป็น −

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