We are still cooking the magic in the way!
نصائح وحيل
اكتشف نصائح عملية في البرمجة والرياضيات لتعزيز إنتاجيتك ومهارات حل المشكلات
استخدم المعامل الثلاثي للشروط البسيطة
المشكلة
كتابة جمل if-else مطولة للشروط البسيطة تجعل الكود أصعب في القراءة والصيانة.
الحل
استخدم المعامل الثلاثي (condition ? true : false) للتعيينات الشرطية في سطر واحد.
الفائدة
يقلل طول الكود بنسبة تصل إلى 70٪ ويحسن قابلية القراءة للشروط البسيطة.
مثال الكود
// بدلاً من:
if (age >= 18) {
status = 'adult';
} else {
status = 'minor';
}
// استخدم:
status = age >= 18 ? 'adult' : 'minor';
الضرب السريع في 11
المشكلة
ضرب الأرقام ذات الخانتين في 11 باستخدام الطرق التقليدية يستغرق وقتاً.
الحل
اجمع الرقمين وضع المجموع بينهما. إذا كان المجموع > 9، احمل الواحد.
الفائدة
يقلل وقت الحساب بنسبة 80٪ ويمكن إجراؤه ذهنياً.
مثال
23 × 11:
2 _ 3 ← 2 (2+3) 3 ← 253
67 × 11:
6 _ 7 ← 6 (6+7) 7 ← 6(13)7 ← 737
89 × 11:
8 _ 9 ← 8 (8+9) 9 ← 8(17)9 ← 979
استخدم تفكيك المصفوفات
المشكلة
استخراج قيم متعددة من المصفوفات أو الكائنات يتطلب كتابة كود تعيين متكرر.
الحل
استخدم بناء التفكيك لاستخراج قيم متعددة في سطر واحد.
الفائدة
يجعل الكود أنظف، ويقلل الأخطاء، ويحسن كفاءة تعيين المتغيرات.
مثال الكود
// تفكيك المصفوفة
const [first, second, third] = [1, 2, 3];
// تفكيك الكائن
const { name, age } = user;
تربيع الأرقام المنتهية بـ 5
المشكلة
تربيع الأرقام المنتهية بـ 5 باستخدام الضرب التقليدي بطيء.
الحل
خذ الرقم/الأرقام الأولى، اضربها في (نفسها + 1)، ثم أضف 25.
الفائدة
حساب فوري بدون ضرب طويل، يوفر 90٪ من الوقت.
مثال
25² = 2×(2+1) = 2×3 = 6، أضف 25 ← 625
75² = 7×(7+1) = 7×8 = 56، أضف 25 ← 5625
105² = 10×(10+1) = 10×11 = 110، أضف 25 ← 11025
استخدم Array.map() بدلاً من الحلقات
المشكلة
حلقات for التقليدية لتحويل المصفوفات مطولة وعرضة للأخطاء مع إدارة الفهرس اليدوي.
الحل
استخدم Array.map() لتحويل المصفوفات بطريقة وظيفية وتصريحية.
الفائدة
يقلل الكود بنسبة 60٪، ويزيل أخطاء الفهرس، ويجعل الغرض أوضح.
مثال الكود
// بدلاً من:
const doubled = [];
for (let i = 0; i < numbers.length; i++) {
doubled.push(numbers[i] * 2);
}
// استخدم:
const doubled = numbers.map(n => n * 2);
الضرب في 9 باستخدام الأصابع
المشكلة
حفظ جدول ضرب 9 صعب على العديد من الطلاب.
الحل
ارفع 10 أصابع. لـ 9×n، اثنِ الإصبع رقم n. الأصابع يسار الثني = العشرات، اليمين = الآحاد.
الفائدة
طريقة بصرية تعمل لجميع عمليات الضرب بأرقام مفردة في 9.
مثال
9 × 3:
اثنِ الإصبع الثالث ← 2 أصابع يساراً، 7 أصابع يميناً ← 27
9 × 7:
اثنِ الإصبع السابع ← 6 أصابع يساراً، 3 أصابع يميناً ← 63
استخدم القوالب النصية لدمج النصوص
المشكلة
دمج النصوص باستخدام + صعب القراءة والصيانة، خاصة مع متغيرات متعددة.
الحل
استخدم القوالب النصية مع علامات `` وبناء ${} لدمج نصوص أنظف.
الفائدة
يحسن القابلية للقراءة بنسبة 80٪ ويدعم النصوص متعددة الأسطر بدون دمج يدوي.
مثال الكود
// بدلاً من:
const msg = 'Hello ' + name + ', you are ' + age + ' years old.';
// استخدم:
const msg = `Hello ${name}, you are ${age} years old.`;
الضرب في 5 بسرعة
المشكلة
ضرب الأرقام الكبيرة في 5 يتطلب ضرب طويل.
الحل
اضرب في 10، ثم اقسم على 2. أو اقسم على 2، ثم اضرب في 10.
الفائدة
يحول الضرب الصعب إلى قسمة/ضرب بسيط في 10.
مثال
86 × 5:
86 × 10 = 860
860 ÷ 2 = 430
أو: 86 ÷ 2 = 43
43 × 10 = 430
استخدم Object.keys() للتحقق من الكائنات الفارغة
المشكلة
التحقق من أن الكائن فارغ يتطلب التكرار عبر خصائصه يدوياً.
الحل
استخدم Object.keys(obj).length === 0 للتحقق بسرعة من عدم وجود خصائص.
الفائدة
حل من سطر واحد أسرع وأكثر موثوقية من التكرار اليدوي.
مثال الكود
// تحقق إذا كان الكائن فارغاً
const isEmpty = Object.keys(myObj).length === 0;
// احصل على جميع مفاتيح الكائن
const keys = Object.keys(user); // ['name', 'age', 'email']
حساب النسبة المئوية السريع
المشكلة
حساب النسب المئوية مثل 15٪ أو 18٪ يتطلب رياضيات ذهنية معقدة.
الحل
قسّم النسب المئوية إلى أجزاء سهلة: 10٪، 5٪، 1٪. ثم اجمعها.
الفائدة
احسب أي نسبة مئوية ذهنياً بتقسيمها إلى مكونات بسيطة.
مثال
15٪ من 80:
10٪ = 8
5٪ = 4
15٪ = 8 + 4 = 12
18٪ من 200:
10٪ = 20
5٪ = 10
1٪ = 2
3٪ = 6
18٪ = 20 + 10 + 10 - 6 = 36
استخدم Array.filter() لإزالة القيم الخاطئة
المشكلة
إزالة null و undefined و 0 و false و NaN من المصفوفات يتطلب منطق شرطي معقد.
الحل
استخدم Array.filter(Boolean) لإزالة جميع القيم الخاطئة في سطر واحد.
الفائدة
يزيل أكثر من 10 أسطر من المنطق الشرطي ويتعامل مع جميع القيم الخاطئة تلقائياً.
مثال الكود
const arr = [0, 1, false, 2, '', 3, null, undefined, NaN];
// احذف جميع القيم الخاطئة
const clean = arr.filter(Boolean);
// النتيجة: [1, 2, 3]
قاعدة القسمة على 3
المشكلة
اختبار قسمة الأرقام الكبيرة على 3 يتطلب قسمة فعلية.
الحل
اجمع جميع الأرقام. إذا كان المجموع يقبل القسمة على 3، فالرقم يقبل القسمة على 3.
الفائدة
اختبار قسمة فوري بدون إجراء القسمة.
مثال
هل 2,847 يقبل القسمة على 3؟
2 + 8 + 4 + 7 = 21
21 ÷ 3 = 7 ✓
نعم، 2847 يقبل القسمة على 3
هل 5,923 يقبل القسمة على 3؟
5 + 9 + 2 + 3 = 19
19 لا يقبل القسمة على 3 ✗
استخدم المعاملات الافتراضية
المشكلة
الدوال تحتاج قيم احتياطية عند عدم توفير المعاملات، مما يتطلب فحوصات يدوية.
الحل
استخدم بناء المعاملات الافتراضية لتعيين القيم الاحتياطية تلقائياً في توقيعات الدوال.
الفائدة
يقلل البرمجة الدفاعية بنسبة 50٪ ويجعل واجهات الدوال موثقة ذاتياً.
مثال الكود
// بدلاً من:
function greet(name) {
name = name || 'Guest';
return `Hello ${name}`;
}
// استخدم:
function greet(name = 'Guest') {
return `Hello ${name}`;
}
قاعدة القسمة على 9
المشكلة
فحص القسمة على 9 للأرقام الكبيرة يتطلب قسمة طويلة.
الحل
اجمع جميع الأرقام. إذا كان المجموع يقبل القسمة على 9، فالرقم يقبل القسمة على 9.
الفائدة
فحص ذهني سريع للقسمة على 9 بدون حساب.
مثال
هل 7,362 يقبل القسمة على 9؟
7 + 3 + 6 + 2 = 18
18 ÷ 9 = 2 ✓
نعم، 7362 يقبل القسمة على 9
(في الواقع: 7362 ÷ 9 = 818)
استخدم معامل النشر لنسخ المصفوفات
المشكلة
نسخ المصفوفات بالطرق التقليدية قد ينشئ مراجع بدلاً من مصفوفات جديدة عن طريق الخطأ.
الحل
استخدم معامل النشر [...arr] لإنشاء نسخة سطحية من المصفوفة.
الفائدة
يمنع أخطاء التعديل وينشئ نسخ مستقلة في بناء بسيط واحد.
مثال الكود
const original = [1, 2, 3];
// انسخ المصفوفة
const copy = [...original];
// ادمج المصفوفات
const merged = [...arr1, ...arr2];
تقدير سريع للجذر التربيعي
المشكلة
إيجاد الجذور التربيعية ذهنياً للمربعات غير الكاملة صعب.
الحل
جد المربعين الكاملين بينهما، ثم قدّر بالتناسب.
الفائدة
احصل على تقديرات دقيقة (±0.5) للجذور التربيعية ذهنياً في ثوانٍ.
مثال
√50:
49 < 50 < 64
7 < √50 < 8
50 قريب من 49، لذا √50 ≈ 7.1
(الفعلي: 7.07)
√80:
64 < 80 < 81
8 < √80 < 9
80 قريب جداً من 81، لذا √80 ≈ 8.9
(الفعلي: 8.94)
استخدم Array.includes() للشروط المتعددة
المشكلة
التحقق من شروط OR متعددة ينشئ سلاسل مقارنة طويلة ومتكررة.
الحل
استخدم Array.includes() للتحقق من تطابق قيمة مع أي عنصر في مصفوفة الاحتمالات.
الفائدة
يقلل تعقيد الشروط بنسبة 70٪ ويجعل الكود أكثر قابلية للصيانة.
مثال الكود
// بدلاً من:
if (status === 'active' || status === 'pending' || status === 'approved') {
// ...
}
// استخدم:
if (['active', 'pending', 'approved'].includes(status)) {
// ...
}
ضرب رقمين من خانتين ينتهيان بنفس الرقم
المشكلة
ضرب أرقام مثل 23×27 أو 41×49 يتطلب ضرب كامل.
الحل
عندما خانة العشرات نفسها والآحاد تجمع إلى 10: اضرب العشرات×(العشرات+1)، ثم الآحاد×الآحاد.
الفائدة
اختصار حالة خاصة يوفر 80٪ من وقت الحساب.
مثال
23 × 27 (نفس العشرات 2، الآحاد تجمع 10: 3+7=10):
العشرات: 2 × (2+1) = 2 × 3 = 6
الآحاد: 3 × 7 = 21
الجواب: 621
41 × 49:
العشرات: 4 × 5 = 20
الآحاد: 1 × 9 = 09
الجواب: 2009
استخدم التسلسل الاختياري للخصائص المتداخلة
المشكلة
الوصول إلى خصائص الكائنات المتداخلة يتطلب فحوصات null/undefined متعددة.
الحل
استخدم التسلسل الاختياري (?.) للوصول الآمن للخصائص المتداخلة بدون فحوصات null صريحة.
الفائدة
يزيل 90٪ من كود فحص null ويمنع أخطاء "Cannot read property".
مثال الكود
// بدلاً من:
const city = user && user.address && user.address.city;
// استخدم:
const city = user?.address?.city;
جمع الكسور بمقامات مختلفة
المشكلة
جمع الكسور يتطلب إيجاد المقام المشترك الأصغر وهو مستهلك للوقت.
الحل
استخدم الضرب التبادلي: (a/b + c/d) = (ad + bc) / (bd)
الفائدة
طريقة عالمية تعمل لأي جمع كسور بدون إيجاد المقام المشترك الأصغر.
مثال
2/3 + 3/4:
(2×4 + 3×3) / (3×4)
(8 + 9) / 12
17/12 = 1 5/12
1/5 + 2/7:
(1×7 + 2×5) / (5×7)
(7 + 10) / 35
17/35
استخدم Array.find() بدلاً من filter()[0]
المشكلة
استخدام filter() للعثور على عنصر واحد يعالج المصفوفة بالكامل دون داعٍ.
الحل
استخدم Array.find() الذي يتوقف عند أول تطابق، مما يحسن الأداء.
الفائدة
أسرع بما يصل إلى 100 مرة للمصفوفات الكبيرة ويوضح الغرض بشكل أفضل.
مثال الكود
const users = [{id: 1, name: 'John'}, {id: 2, name: 'Jane'}];
// غير فعال:
const user = users.filter(u => u.id === 2)[0];
// فعال:
const user = users.find(u => u.id === 2);
خدعة الضرب في 99
المشكلة
الضرب في 99 يتطلب ضرب طويل مع الحمل.
الحل
اضرب في 100 واطرح الرقم الأصلي.
الفائدة
يحول الضرب الصعب إلى طرح بسيط.
مثال
46 × 99:
46 × 100 = 4600
4600 - 46 = 4554
73 × 99:
73 × 100 = 7300
7300 - 73 = 7227
استخدم Set لإزالة التكرار من المصفوفات
المشكلة
إزالة التكرار من المصفوفات يتطلب حلقات متداخلة أو منطق filter معقد.
الحل
حول المصفوفة إلى Set (الذي يخزن قيم فريدة فقط) ثم ارجعها لمصفوفة.
الفائدة
حل من سطر واحد أسرع بـ 50 مرة من الطرق التقليدية.
مثال الكود
const numbers = [1, 2, 2, 3, 3, 3, 4];
// احذف التكرار
const unique = [...new Set(numbers)];
// النتيجة: [1, 2, 3, 4]
حساب نسبة البقشيش بسرعة
المشكلة
حساب بقشيش 15٪ أو 20٪ في المطاعم يتطلب رياضيات ذهنية تحت ضغط.
الحل
10٪ = حرك الفاصلة يساراً. 20٪ = ضاعف ذلك. 15٪ = 10٪ + نصف 10٪.
الفائدة
احسب نسب البقشيش الشائعة في 3 ثوانٍ بدون آلة حاسبة.
مثال
الفاتورة: $84.50
10٪ = $8.45
بقشيش 20٪ = $8.45 × 2 = $16.90
بقشيش 15٪ = $8.45 + $4.23 = $12.68
الفاتورة: $42.00
10٪ = $4.20
بقشيش 15٪ = $4.20 + $2.10 = $6.30
استخدم Array.reduce() للتحويلات القوية
المشكلة
التحويلات المعقدة للمصفوفات تتطلب تمريرات متعددة ومتغيرات وسيطة.
الحل
استخدم Array.reduce() لتحويل المصفوفات إلى أي شكل (مجموع، كائن، بيانات مجمعة).
الفائدة
حل بتمريرة واحدة يتعامل مع التحويلات المعقدة بكفاءة.
مثال الكود
const numbers = [1, 2, 3, 4, 5];
// اجمع المصفوفة
const sum = numbers.reduce((acc, n) => acc + n, 0);
// جمّع حسب الخاصية
const grouped = items.reduce((acc, item) => {
acc[item.category] = acc[item.category] || [];
acc[item.category].push(item);
return acc;
}, {});
تحويل سلسيوس إلى فهرنهايت بسرعة
المشكلة
الصيغة الدقيقة (C × 9/5) + 32 صعبة الحساب ذهنياً.
الحل
ضاعف السلسيوس، اطرح 10٪، ثم أضف 32.
الفائدة
يقدّر فهرنهايت ضمن ±1 درجة باستخدام رياضيات ذهنية بسيطة.
مثال
20°C إلى °F:
20 × 2 = 40
40 - 4 = 36
36 + 32 = 68°F
(الدقيق: 68°F)
30°C إلى °F:
30 × 2 = 60
60 - 6 = 54
54 + 32 = 86°F
(الدقيق: 86°F)
استخدم console.table() لتصحيح الأخطاء
المشكلة
تصحيح مصفوفات الكائنات باستخدام console.log() يجعل البيانات صعبة القراءة والمقارنة.
الحل
استخدم console.table() لعرض المصفوفات والكائنات في جدول منسق.
الفائدة
يجعل تصحيح الأخطاء أسرع بـ 10 مرات مع تصور جدولي واضح قابل للفرز.
مثال الكود
const users = [
{id: 1, name: 'John', age: 30},
{id: 2, name: 'Jane', age: 25}
];
// اعرض كجدول
console.table(users);
تحقق من الضرب بخدعة 9s
المشكلة
التحقق من نتائج الضرب يتطلب إعادة حساب المسألة بالكامل.
الحل
استخدم طرح التسعات: اجمع أرقام كل عدد بشكل متكرر حتى رقم واحد، ثم تحقق.
الفائدة
طريقة تحقق سريعة تمسك 90٪ من أخطاء الحساب.
مثال
تحقق: 234 × 56 = 13,104
234: 2+3+4=9 ← 9
56: 5+6=11 ← 1+1=2
9 × 2 = 18 ← 1+8=9
13,104: 1+3+1+0+4=9 ✓
الجواب على الأرجح صحيح!
استخدم دمج القيم الفارغة للقيم الافتراضية
المشكلة
استخدام || للقيم الافتراضية يعامل 0 و false كقيم خاطئة، مما يسبب سلوك غير متوقع.
الحل
استخدم ?? (دمج القيم الفارغة) الذي يُفعّل فقط لـ null/undefined وليس 0/false.
الفائدة
يمنع الأخطاء عند العمل مع 0 أو false أو نصوص فارغة كقيم صالحة.
مثال الكود
const count = 0;
// خطأ: count تصبح 10 (غير متوقع)
const value1 = count || 10;
// صحيح: count تبقى 0
const value2 = count ?? 10;
الطرح من 1000 بسرعة
المشكلة
الطرح من 1000 مع الاستلاف عرضة للأخطاء.
الحل
اطرح كل رقم من 9، ماعدا الرقم الأخير الذي تطرحه من 10.
الفائدة
لا حاجة للاستلاف، يزيل أكثر أخطاء الطرح شيوعاً.
مثال
1000 - 456:
9-4=5
9-5=4
10-6=4
الجواب: 544
1000 - 723:
9-7=2
9-2=7
10-3=7
الجواب: 277
استخدم دوال الأسهم للاستدعاءات الأقصر
المشكلة
بناء الدالة التقليدي في الاستدعاءات يضيف إطناب غير ضروري.
الحل
استخدم دوال الأسهم (=>) لبناء استدعاءات مختصرة مع إرجاع ضمني.
الفائدة
يقلل كود الاستدعاءات بنسبة 40٪ ويربط سياق this تلقائياً.
مثال الكود
// تقليدي
numbers.map(function(n) {
return n * 2;
});
// دالة سهم
numbers.map(n => n * 2);
اختصار الضرب في 15
المشكلة
الضرب في 15 يتطلب خطوات متعددة بالطرق التقليدية.
الحل
اضرب في 10، ثم أضف نصف تلك النتيجة.
الفائدة
يقلل الضرب المعقد إلى جمع بسيط.
مثال
24 × 15:
24 × 10 = 240
240 ÷ 2 = 120
240 + 120 = 360
36 × 15:
36 × 10 = 360
360 ÷ 2 = 180
360 + 180 = 540
استخدم Object.assign() لنسخ الكائنات
المشكلة
تعيين الكائنات ينشئ مراجع، مما يسبب تعديلات عرضية.
الحل
استخدم Object.assign({}, obj) أو نشر {...obj} لإنشاء نسخ سطحية.
الفائدة
يمنع أخطاء التعديل ويسمح بمعالجة آمنة للكائنات.
مثال الكود
const original = {name: 'John', age: 30};
// انسخ الكائن
const copy1 = Object.assign({}, original);
const copy2 = {...original};
// ادمج الكائنات
const merged = {...obj1, ...obj2};
تربيع الأرقام القريبة من 50
المشكلة
تربيع أرقام مثل 48 أو 52 يتطلب ضرب طويل.
الحل
استخدم (50-a)² = 2500 - 100a + a² أو (50+a)² = 2500 + 100a + a²
الفائدة
يحول المربعات الصعبة إلى حساب بسيط حول 2500.
مثال
48² (50-2):
2500 - 200 + 4 = 2304
52² (50+2):
2500 + 200 + 4 = 2704
47² (50-3):
2500 - 300 + 9 = 2209
استخدم Array.some() و Array.every()
المشكلة
التحقق من أن أي/جميع العناصر تحقق شرطاً يتطلب حلقات يدوية مع جمل break.
الحل
استخدم Array.some() للتحقق من تطابق أي عنصر، Array.every() لجميع العناصر.
الفائدة
أكثر قابلية للقراءة ويوقف التنفيذ مبكراً لأداء أفضل.
مثال الكود
const numbers = [1, 2, 3, 4, 5];
// تحقق إذا كان أي رقم > 3
const hasLarge = numbers.some(n => n > 3); // true
// تحقق إذا كانت جميع الأرقام > 0
const allPositive = numbers.every(n => n > 0); // true
قاعدة القسمة على 4
المشكلة
اختبار القسمة على 4 للأرقام الكبيرة يتطلب القسمة.
الحل
افحص فقط الرقمين الأخيرين. إذا شكلا عدداً يقبل القسمة على 4، فالعدد الكامل يقبلها.
الفائدة
اختبر أي عدد للقسمة على 4 فوراً.
مثال
هل 5,328 يقبل القسمة على 4؟
افحص آخر رقمين: 28
28 ÷ 4 = 7 ✓
نعم!
هل 7,862 يقبل القسمة على 4؟
افحص آخر رقمين: 62
62 ÷ 4 = 15.5 ✗
لا!
استخدم Array.flat() لتسطيح المصفوفات المتداخلة
المشكلة
تسطيح المصفوفات المتداخلة يتطلب دوال تكرارية أو منطق reduce معقد.
الحل
استخدم Array.flat(depth) لتسطيح المصفوفات إلى عمق محدد في سطر واحد.
الفائدة
يزيل أكثر من 20 سطر من كود التسطيح التكراري.
مثال الكود
const nested = [1, [2, 3], [4, [5, 6]]];
// سطّح مستوى واحد
const flat1 = nested.flat(); // [1, 2, 3, 4, [5, 6]]
// سطّح جميع المستويات
const flat2 = nested.flat(Infinity); // [1, 2, 3, 4, 5, 6]
قاعدة القسمة على 6
المشكلة
فحص القسمة على 6 يتطلب فحص 2 و 3 بشكل منفصل.
الحل
الرقم يجب أن يكون زوجياً والمجموع أرقام يقبل القسمة على 3.
الفائدة
يدمج قاعدتين بسيطتين لفحص قسمة سريع.
مثال
هل 426 يقبل القسمة على 6؟
زوجي؟ نعم (ينتهي بـ 6)
مجموع الأرقام: 4+2+6=12، 12÷3=4 ✓
نعم، يقبل القسمة على 6!
هل 534 يقبل القسمة على 6؟
زوجي؟ نعم
مجموع الأرقام: 5+3+4=12، 12÷3=4 ✓
نعم!
استخدم Promise.all() للعمليات المتزامنة المتوازية
المشكلة
استدعاءات await المتسلسلة تضيع الوقت عندما يمكن تشغيل العمليات بالتوازي.
الحل
استخدم Promise.all() لتنفيذ عمليات متزامنة متعددة في نفس الوقت.
الفائدة
يمكن أن يقلل وقت التنفيذ بنسبة 70٪ للعمليات المتزامنة المستقلة.
مثال الكود
// متسلسل (بطيء): 3 ثوان إجمالاً
const user = await fetchUser();
const posts = await fetchPosts();
const comments = await fetchComments();
// متوازي (سريع): ثانية واحدة إجمالاً
const [user, posts, comments] = await Promise.all([
fetchUser(),
fetchPosts(),
fetchComments()
]);
الضرب في 25 فوراً
المشكلة
الضرب في 25 يتطلب ضرب طويل معقد.
الحل
اقسم على 4 واضرب في 100 (أو اضرب في 100 واقسم على 4).
الفائدة
يحول الضرب إلى قسمة بسيطة على 4.
مثال
32 × 25:
32 ÷ 4 = 8
8 × 100 = 800
48 × 25:
48 ÷ 4 = 12
12 × 100 = 1200
استخدم Array.from() لتحويل القابلة للتكرار
المشكلة
تحويل NodeLists أو Sets أو النصوص إلى مصفوفات يتطلب تحويل يدوي معقد.
الحل
استخدم Array.from() لتحويل أي قابل للتكرار إلى مصفوفة مع خريطة اختيارية.
الفائدة
حل تحويل عالمي يعمل مع جميع الأنواع القابلة للتكرار.
مثال الكود
// حول NodeList إلى مصفوفة
const divs = Array.from(document.querySelectorAll('div'));
// أنشئ مصفوفة من نص
const chars = Array.from('hello'); // ['h','e','l','l','o']
// أنشئ مصفوفة مع خريطة
const squares = Array.from({length: 5}, (_, i) => i * i);
// [0, 1, 4, 9, 16]
خوارزمية يوم الأسبوع (تقويم ذهني)
المشكلة
معرفة أي يوم من الأسبوع يقع فيه تاريخ يتطلب تقويماً.
الحل
استخدم صيغة زيلر المبسطة: تعلم أيام المرساة لكل شهر واحسب للأمام/الخلف.
الفائدة
أبهر الآخرين بحساب يوم أي تاريخ ذهنياً.
مثال
لسنة 2024 (سنة كبيسة):
1 يناير = الاثنين (المرساة)
1 فبراير = الخميس (+31 يوماً = +3 أيام)
1 مارس = الجمعة (+29 يوماً = +1 يوم)
ما هو يوم 14 فبراير 2024؟
1 فبراير هو الخميس
14-1 = 13 يوماً للأمام
13 ÷ 7 = 1 أسبوع + 6 أيام
الخميس + 6 = الأربعاء
استخدم تقييم الدائرة القصيرة
المشكلة
التنفيذ الشرطي غالباً يتطلب جمل if مطولة للحالات البسيطة.
الحل
استخدم && للتنفيذ الشرطي و || للقيم الاحتياطية في سطر واحد.
الفائدة
يقلل الشروط البسيطة من 5 أسطر إلى سطر واحد.
مثال الكود
// نفّذ إذا كان الشرط صحيحاً
isLoggedIn && redirectToDashboard();
// استخدم قيمة احتياطية
const name = userName || 'Guest';
// سلسل الشروط
user && user.isAdmin && showAdminPanel();
قاعدة 72 للفائدة المركبة
المشكلة
حساب المدة التي يستغرقها الاستثمار لمضاعفة يتطلب صيغ معقدة.
الحل
اقسم 72 على معدل الفائدة للحصول على السنوات التقريبية للمضاعفة.
الفائدة
حساب سريع لوقت مضاعفة الاستثمار بدون صيغ أو آلات حاسبة.
مثال
عائد سنوي 6٪:
72 ÷ 6 = 12 سنة للمضاعفة
عائد سنوي 9٪:
72 ÷ 9 = 8 سنوات للمضاعفة
عائد سنوي 12٪:
72 ÷ 12 = 6 سنوات للمضاعفة
استخدم JSON.parse() مع دالة الإحياء
المشكلة
تحليل JSON مع تواريخ أو أنواع خاصة يتطلب معالجة يدوية لاحقة.
الحل
استخدم معامل reviver في JSON.parse() لتحويل القيم أثناء التحليل.
الفائدة
يؤتمت تحويل الأنواع ويزيل حلقات التحويل المنفصلة.
مثال الكود
const json = '{"date":"2024-01-01T00:00:00.000Z","count":"42"}';
const data = JSON.parse(json, (key, value) => {
// حول نصوص التاريخ إلى كائنات Date
if (key === 'date') return new Date(value);
// حول النصوص الرقمية إلى أرقام
if (key === 'count') return parseInt(value);
return value;
});
تقدير الجذور التكعيبية
المشكلة
إيجاد الجذور التكعيبية ذهنياً صعب للغاية.
الحل
احفظ مكعبات 1-10، ثم جد بين أي مكعبين يقع الرقم.
الفائدة
قدّر الجذور التكعيبية ضمن ±0.5 بمعرفة 10 نقاط مرجعية.
مثال
مكعبات للحفظ:
1³=1، 2³=8، 3³=27، 4³=64، 5³=125
6³=216، 7³=343، 8³=512، 9³=729، 10³=1000
∛200:
125 < 200 < 216
5 < ∛200 < 6
200 أقرب إلى 216، لذا ∛200 ≈ 5.8
(الفعلي: 5.85)
استخدم الخصائص المختصرة للكائنات
المشكلة
إنشاء كائنات من متغيرات يتطلب أزواج مفتاح-قيمة متكررة.
الحل
استخدم ES6 المختصرة لحذف القيمة عندما يكون المفتاح واسم المتغير متماثلين.
الفائدة
يقلل كود إنشاء الكائنات بنسبة 50٪ ويحسن القابلية للقراءة.
مثال الكود
const name = 'John';
const age = 30;
const city = 'NYC';
// بدلاً من:
const user1 = {name: name, age: age, city: city};
// استخدم:
const user2 = {name, age, city};
صيغة الزيادة/النقص المئوية
المشكلة
حساب التغيير المئوي بين قيمتين محير وعرضة للأخطاء.
الحل
((الجديد - القديم) / القديم) × 100. موجب = زيادة، سالب = نقص.
الفائدة
صيغة عالمية لجميع حسابات التغيير المئوي.
مثال
السعر ارتفع من $50 إلى $65:
((65 - 50) / 50) × 100
(15 / 50) × 100 = زيادة 30٪
السعر انخفض من $80 إلى $60:
((60 - 80) / 80) × 100
(-20 / 80) × 100 = نقص 25٪
استخدم console.time() لقياس الأداء
المشكلة
قياس وقت تنفيذ الكود يتطلب حسابات Date.now() يدوية.
الحل
استخدم console.time() و console.timeEnd() لقياس وقت التنفيذ بسهولة.
الفائدة
قياس أداء بسيط ودقيق بدون حسابات طوابع زمنية يدوية.
مثال الكود
console.time('معالجة المصفوفة');
const result = largeArray.map(item => {
// معالجة معقدة
return processItem(item);
});
console.timeEnd('معالجة المصفوفة');
// الناتج: معالجة المصفوفة: 234.56ms
جمع أعمدة طويلة من الأرقام بسرعة
المشكلة
جمع قوائم طويلة من الأرقام واحداً تلو الآخر بطيء وعرضة للأخطاء.
الحل
ابحث عن أزواج تجمع إلى 10، جمّع أرقام سهلة الجمع (مثل 25+75=100).
الفائدة
يسرع الجمع الذهني بنسبة 50٪ بتقليل عدد العمليات.
مثال
اجمع: 8 + 14 + 2 + 6 + 25 + 75
جمّع استراتيجياً:
(8 + 2) = 10
(14 + 6) = 20
(25 + 75) = 100
10 + 20 + 100 = 130
لم يتم العثور على نصائح مطابقة لبحثك
جرب مصطلح بحث أو فلتر مختلف