สมมติว่าเรามีอาร์เรย์ของวัตถุเช่นนี้ -
const arr = [
{code: "AA", gender:"male", DOB:"2000-05-15"},
{code: "AA", gender:"female", DOB:"2015-05-15"},
{code:"A0", gender:"female", DOB:"2005-01-01"},
{code: "A1", gender:"male", DOB:"2015-01-15"}
]; เราจำเป็นต้องเขียนฟังก์ชัน JavaScript ที่รับอาร์เรย์ของอ็อบเจ็กต์ดังกล่าว ฟังก์ชันควรนับจำนวนของวัตถุที่ซ้ำกันในอาร์เรย์ (ตามคุณสมบัติ "รหัส" ของวัตถุ) และกำหนดคุณสมบัติการนับใหม่ให้กับแต่ละวัตถุที่ไม่ซ้ำ
ฟังก์ชันควรกำหนดคุณสมบัติย่อยให้กับแต่ละอ็อบเจ็กต์ที่ไม่ซ้ำกันซึ่งมีค่าจะเป็น 1 หากอายุ (คำนวณโดยใช้ "DOB" และวันที่ปัจจุบัน) น้อยกว่า 18 ปี มิฉะนั้น 0
ตัวอย่าง
รหัสสำหรับสิ่งนี้จะเป็น −
const arr = [
{code: "AA", gender:"male", DOB:"2000−05−15"},
{code: "AA", gender:"female", DOB:"2015−05−15"},
{code:"A0", gender:"female", DOB:"2005−01−01"},
{code: "A1", gender:"male", DOB:"2015−01−15"}
];
const groupAndAdd = (arr = []) => {
const result = new Map();
let nowYear = new Date().getYear();
arr.forEach(el => {
let item = result.get(el.code) || {code: el.code, count: 0, female: 0, child: 0 };
item.count++;
item.female += el.gender === "female";
item.child += nowYear − new Date(Date.parse(el.DOB)).getYear() <18;
result.set(item.code, item);
});
return result;
};
console.log(groupAndAdd(arr)); ผลลัพธ์
และผลลัพธ์ในคอนโซลจะเป็น −
Map {
'AA' => { code: 'AA', count: 2, female: 1, child: 1 },
'A0' => { code: 'A0', count: 1, female: 1, child: 1 },
'A1' => { code: 'A1', count: 1, female: 0, child: 1 }
}