สมมติว่าเรามีอาร์เรย์ของวัตถุที่มีข้อมูลเกี่ยวกับผลไม้และผักบางอย่างเช่นนี้ −
const arr = [ {food: 'apple', type: 'fruit'}, {food: 'potato', type: 'vegetable'}, {food: 'banana', type: 'fruit'}, ];
เราจำเป็นต้องเขียนฟังก์ชัน JavaScript ที่รับอาร์เรย์ดังกล่าว
ฟังก์ชันของเราควรจัดกลุ่มออบเจ็กต์อาร์เรย์ตามคุณสมบัติ "ประเภท" ของออบเจกต์
หมายความว่าวัตถุประเภท "ผลไม้" ทั้งหมดจะถูกจัดกลุ่มเข้าด้วยกัน และประเภท "ผัก" จัดกลุ่มแยกกัน
ตัวอย่าง
รหัสสำหรับสิ่งนี้จะเป็น −
const arr = [ {food: 'apple', type: 'fruit'}, {food: 'potato', type: 'vegetable'}, {food: 'banana', type: 'fruit'}, ]; const transformArray = (arr = []) => { const res = []; const map = {}; let i, j, curr; for (i = 0, j = arr.length; i < j; i++) { curr = arr[i]; if (!(curr.type in map)) { map[curr.type] = {type: curr.type, foods: []}; res.push(map[curr.type]); }; map[curr.type].foods.push(curr.food); }; return res; }; console.log(transformArray(arr));
ผลลัพธ์
และผลลัพธ์ในคอนโซลจะเป็น −
[ { type: 'fruit', foods: [ 'apple', 'banana' ] }, { type: 'vegetable', foods: [ 'potato' ] } ]