اذهب إلى المحتوى

السؤال

Recommended Posts

  • 0
نشر

قبل أن نشرح الفرق بينهم يجب علينا معرفة أن كلاهما يستخدم للمر على عناصر المصفوفة وارجاع مصفوفة جديدة يتم تطبيق عليها دالة معينة.

map ترجع المصفوفة على ما هي ولا تغير شيء مثال:

const arr = [1, 2, 3];

const result = arr.map(x => [x * 2]);

console.log(result); 
// [[2], [4], [6]]

لاحظ ان لدينا الان مصفوفة ثنائية الابعاد اي مصفوفة داخل مصفوفة لاننا خزنا القيم الجديدة داخل مصفوفات متفرقة.

بينما flatmap فعملها ان تجعل المصفوفة ذو بعد واحد اي انه لا تحتوي مصفوفات داخل مصفوفة بل هي مصفوفة واحدة مثل:

const arr = [1, 2, 3];

const result = arr.flatMap(x => [x * 2]);

console.log(result); 
// [2, 4, 6]

لاحظ هنا انه تكونت مصفوفة واحد فقط.

  • 0
نشر

بشكل مبسط الفرق بينهما أن الدالة map تأخذ كل عنصر في المجموعة وتطبق عليه دالة معينة، ثم تعيد مجموعة جديدة بنفس الحجم تحتوي على النتائج المحولة. بينما flatMap تعمل بخطوتين: أولاً تطبق دالة على كل عنصر (مثل map)، ثم تقوم بـ "تسطيح" النتيجة إذا كانت مصفوفات متداخلة ولتوضيح الفرق أكثر يمكنك الإطلاع على المثال التالي لflatMap

const words = ["hello", "world"];
const letters = words.flatMap(word => word.split(''));
console.log(letters); // ['h', 'e', 'l', 'l', 'o', 'w', 'o', 'r', 'l', 'd']

بينما لو استخدمنا map بدلاً من flatMap في المثال السابق:

const letters = words.map(word => word.split(''));
console.log(letters); // [['h', 'e', 'l', 'l', 'o'], ['w', 'o', 'r', 'l', 'd']]

لاحظ كيف أن map أعطتنا مصفوفة من المصفوفات، بينما flatMap أعطتنا مصفوفة مسطحة واحدة.

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...