สมมติว่ามีอาร์เรย์ของออบเจ็กต์ดังนี้:
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 }
]