สมมติว่าเรามีอาร์เรย์ดังนี้:
const arr = [
{unit: 35, brand: 'CENTURY'},
{unit: 35, brand: 'BADGER'},
{unit: 25, brand: 'CENTURY'},
{unit: 15, brand: 'CENTURY'},
{unit: 25, brand: 'XEGAR'}
];เราต้องเขียนฟังก์ชันที่จัดกลุ่ม property brand ของอ็อบเจกต์ที่มีค่า unit เหมือนกัน
สำหรับอาร์เรย์ข้างต้น อาร์เรย์ใหม่ควรเป็น:
const output = [
{unit: 35, brand: 'CENTURY, BADGER'},
{unit: 25, brand: 'CENTURY, XEGAR'},
{unit: 15, brand: 'CENTURY'}
];เราจะวนลูปผ่านอาร์เรย์ ค้นหาอ็อบเจกต์ที่มีค่า unit โดยใช้ฟังก์ชันช่วย ถ้ามีอยู่แล้ว ให้ต่อค่า brand เข้าไป มิฉะนั้น สร้างอ็อบเจกต์ใหม่
ตัวอย่าง
โค้ดต่อไปนี้เป็นตัวอย่าง:
const arr = [
{unit: 35, brand: 'CENTURY'},
{unit: 35, brand: 'BADGER'},
{unit: 25, brand: 'CENTURY'},
{unit: 15, brand: 'CENTURY'},
{unit: 25, brand: 'XEGAR'}
];
const indexOf = function(unit){
return this.findIndex(el => el.unit === unit)
};
Array.prototype.indexOf = indexOf;
const groupArray = arr => {
const res = [];
for(let i = 0; i < arr.length; i++){
const ind = res.indexOf(arr[i].unit);
if(ind !== -1){
res[ind].brand += `, ${arr[i].brand}`;
}else{
res.push(arr[i]);
}
};
return res;
};
console.log(groupArray(arr));ผลลัพธ์
จะแสดงผลในคอนโซลดังนี้:
[
{ unit: 35, brand: 'CENTURY, BADGER' },
{ unit: 25, brand: 'CENTURY, XEGAR' },
{ unit: 15, brand: 'CENTURY' }
]