تخطَّ إلى المحتوى

Object.groupBy()

تجميع عناصر مصفوفة حسب معيار Object.groupBy()

Object.groupBy() (ES2024) تبني كائنًا يجمع عناصر أي Iterable في مجموعات، كل مفتاح فيه هو نتيجة دالة تصنيف تطبّقها على كل عنصر.

بديل مباشر وأوضح لنمط reduce() المعقّد الذي كان يُستخدم يدويًا لبناء نفس التجميع. الكائن الناتج بلا prototype (Object.create(null)) لتفادي تعارض أسماء مجموعات مع خصائص كائن عادية موروثة. إذا احتجت مفاتيح غير نصية استخدم الشقيقة Map.groupBy() بدلًا منها.

الصياغة

const grouped = Object.groupBy(iterable, (item, index) => groupKey);

⚡ جرّب بنفسك

عدّل الكود واضغط «تحديث» لترى النتيجة فورًا — التجربة أفضل معلّم.

⚡ محرّر تفاعلي
const products = [
  { name: "لابتوب", category: "إلكترونيات" },
  { name: "كتاب", category: "قرطاسية" },
  { name: "هاتف", category: "إلكترونيات" },
];

const byCategory = Object.groupBy(products, p => p.category);
console.log(byCategory.إلكترونيات); // مصفوفة اللابتوب والهاتف
وحدة التحكّم
اضغط «تشغيل» لرؤية النتيجة هنا.

أهم المعاملات

المعاملالوظيفة
iterableمصفوفة أو أي Iterable يحوي العناصر المراد تجميعها
callbackFnدالة تُرجع مفتاح المجموعة (نص أو Symbol) لكل عنصر

💡 نصائح عملية

  • أبسط بكثير من بناء نفس النتيجة يدويًا بـ reduce() — استخدمها كلما احتجت تجميع بيانات حسب فئة
  • استخدم Map.groupBy() إن أردت مفاتيح ليست نصوصًا (أرقام، كائنات) كمفاتيح المجموعات

⚠️ أخطاء شائعة

  • توقّع أن الناتج نسخة من Object العادي بكل خصائصه الموروثة — الكائن الناتج بلا prototype فبعض الدوال مثل toString قد لا تعمل عليه مباشرة

خصائص ذات صلة

🎓 تريد فهم الصورة الكاملة خطوة بخطوة؟ ابدأ من مسار JAVASCRIPT الكامل بالعربي.