Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Javascript

จัดกลุ่มวัตถุตามคุณสมบัติใน JavaScript


สมมติว่าเรามีอาร์เรย์ของวัตถุที่มีข้อมูลเกี่ยวกับผลไม้และผักบางอย่างเช่นนี้ −

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