يقول مؤلف المقال ، الذي نُنشر ترجمته اليوم ، إنه كان يبرمج في جافا سكريبت لسنوات عديدة. خلال هذا الوقت ، جمع مجموعة من الملفات الممتازة ذات سطر واحد - أجزاء من الشفرات ، قوية بشكل مدهش ، بالنظر إلى أنها تناسب سطر واحد. ووفقًا له ، فإن الفرص الكبيرة هي أيضًا مسؤولية كبيرة ، لذلك تحتاج إلى استخدام هذه التصميمات بعناية ، في محاولة للتأكد من أنها لا تضر بإمكانية قراءة البرامج.

فيما يلي 13 لاعباً في خط واحد. أمثلة تم إعدادها باستخدام Node.js v11.x. إذا كنت تستخدمها في بيئة أخرى ، فقد يؤثر ذلك على تنفيذها.
1. إكراه القيم على النوع المنطقي
إليك كيفية تحديد قيمة لنوع منطقي:
const myBoolean = !!myVariable;
النفي المزدوج (
!!
) ضروري حتى يتم تحويل القيمة الصحيحة من وجهة نظر قواعد JavaScript إلى
true
وخطأ إلى
false
.
2. التخلص من القيم المكررة في المصفوفات
إليك كيفية إزالة القيم المكررة من صفيف:
const deDupe = [...new Set(myArray)];
Set
بنيات البيانات فقط تخزين القيم الفريدة. نتيجة لذلك ، يتيح لك استخدام بنية البيانات هذه وبناء جملة الانتشار إنشاء صفيف جديد يستند إلى
myArray
لا يحتوي على قيم مكررة.
3. إنشاء وتحديد خصائص الكائنات حسب الحالة
لتعيين خصائص الكائنات باستخدام عامل التشغيل
&&
، يمكنك استخدام صيغة الحيز:
const myObject = { ...myProperty && { propName: myProperty } };
إذا ، نتيجة لحساب الجانب الأيسر من التعبير ، تم استلام شيء يدرك JS أنه قيمة خاطئة ، فلن تقوم
&&
بإجراء حسابات أخرى ولن يتم إنشاء وتعيين خاصية جديدة. سوف يكون
myObject
فارغًا. إذا قام الإنشاء
...myProperty
بإرجاع بعض النتائج التي يرى JS أنها صحيحة ، فبفضل
&&
propName
تظهر خاصية
propName
في الكائن الذي يخزن القيمة المستلمة.
4. دمج الكائنات
إليك كيفية إنشاء كائن جديد يتم فيه دمج كائنين آخرين:
const mergedObject = { ...objectOne, ...objectTwo };
يمكن استخدام هذا النهج لتنظيم دمج عدد غير محدود من الكائنات. علاوة على ذلك ، إذا كانت الكائنات لها خصائص لها نفس الأسماء ، فستبقى خاصية واحدة فقط في الكائن النهائي ، الذي ينتمي إلى الكائن من الكائنات الأصلية ، والذي يقع على يمين الآخرين. يرجى ملاحظة أن يتم استخدام نسخ صغيرة من خصائص الكائن هنا.
5. تبادل القيم المتغيرة
لتبادل القيم بين متغيرين دون استخدام متغير مساعد ، يمكنك القيام بذلك:
[varA, varB] = [varB, varA];
بعد ذلك ، ما كان في
varA
يحصل في
varB
، والعكس بالعكس. هذا ممكن بفضل استخدام الآليات الداخلية للتدمير.
6. إزالة القيم الخاطئة من الصفيف
إليك كيفية إزالة جميع القيم التي تعتبر خاطئة في JavaScript من صفيف:
const clean = dirty.filter(Boolean);
أثناء هذه العملية ، سيتم حذف القيم مثل الصفيف ،
undefined
،
false
،
0
، وكذلك الخطوط الفارغة ، من الصفيف.
7. تحويل الأرقام إلى سلاسل
لتحويل الأرقام المخزنة في الصفيف إلى تمثيل سلسلة بهم ، يمكنك القيام بذلك:
const stringArray = numberArray.map(String);
ستبقى عناصر سلسلة الصفيف أثناء عملية التحويل هذه عبارة عن سلسلة.
يمكنك أيضًا إجراء التحويل العكسي عن طريق تحويل قيم النوع
String
إلى قيم النوع
Number
:
const numberArray = stringArray.map(Number);
8. استرداد قيم خاصية الكائن
فيما يلي كيفية استخراج قيمة خاصية الكائن وكتابتها إلى ثابت يختلف اسمه عن اسم هذه الخاصية:
const { original: newName } = myObject;
باستخدام هذا الإنشاء ، سيتم إنشاء ثابت جديد ، اسم جديد ، حيث سيتم كتابة قيمة الخاصية
original
لـ
myObject
.
9. تنسيق كود JSON
إليك كيفية تحويل كود JSON إلى مظهر قابل للقراءة:
const formatted = JSON.stringify(myObj, null, 2);
تأخذ طريقة
stringify
ثلاثة معلمات. الأول هو كائن JavaScript. الثانية ، اختياري ، هي وظيفة يمكن استخدامها لمعالجة كود JSON الناتج عن تحويل الكائن. تشير المعلمة الأخيرة إلى عدد المسافات التي يجب استخدامها عند المسافة البادئة في كود JSON. إذا حذفت المعلمة الأخيرة ، فسيكون كل رمز JSON المستلم سلسلة طويلة واحدة. إذا كان كائن
myObj
يحتوي على مراجع دائرية ، فلا يمكن تحويله إلى تنسيق JSON.
10. إنشاء بسرعة صفائف رقمية
إليك كيفية إنشاء صفيف وملء الأرقام:
const numArray = Array.from(new Array(52), (x, i) => i);
يحتوي العنصر الأول من هذا الصفيف على فهرس 0. يمكن تحديد حجم الصفيف باستخدام إما حرفي رقمي أو متغير. هنا نقوم بإنشاء مجموعة مكونة من 52 عنصرًا ، والتي ، على سبيل المثال ، يمكن استخدامها لتخزين البيانات حول مجموعة أوراق.
11. إنشاء رموز للمصادقة اثنين عامل
لإنشاء رمز مكون من ستة أرقام يستخدم في آليات المصادقة ثنائية العوامل أو في آليات أخرى مماثلة ، يمكنك القيام بذلك:
const code = Math.floor(Math.random() * 1000000).toString().padStart(6, "0");
يرجى ملاحظة أن عدد الأصفار في الرقم الذي يجب ضرب النتيجة التي تم إرجاعها بواسطة
Math.random()
يجب أن يتطابق مع المعلمة الأولى (
targetLength
) الخاصة
padStart
.
12. صفيف الخلط
من أجل خلط صفيف دون معرفة ما يحتويه بالضبط ، يمكنك القيام بذلك:
myArray.sort(() => { return Math.random() - 0.5});
هناك خوارزميات أفضل لخلط المصفوفات. على سبيل المثال ، فيشر ييتس خلط الخوارزمية. اقرأ عن الخوارزميات المختلفة لخلط المصفوفات
هنا .
13. إنشاء نسخ عميقة من الأشياء
لا تختلف طريقة النسخ العميق للأشياء المقترحة هنا في الأداء العالي بشكل خاص. ولكن إذا كنت بحاجة إلى حل هذه المشكلة باستخدام خط واحد ، يمكنك استخدام التعليمات البرمجية التالية:
const myClone = JSON.parse(JSON.stringify(originalObject));
تجدر الإشارة إلى أنه في حالة وجود ارتباطات دائرية في الملف
originalObject
، ستفشل نسخة منه. يوصى باستخدام هذه التقنية في الكائنات البسيطة التي تنشئها بنفسك.
يمكن إنشاء نسخة ضحلة من الكائن باستخدام بناء جملة الانتشار:
const myClone = { ...orignalObject };
ملخص: في الجمع بين وتوسيع رمز سطر واحد
هناك طرق عديدة لدمج مقتطفات الشفرة المعروضة هنا. يتيح لك ذلك حل العديد من المشكلات من خلال مساعدتهم وفي الوقت نفسه استخدام تصميمات لغة مضغوطة للغاية. يعتقد مؤلف هذه المادة أنه أثناء تطور JavaScript ، ستظهر ميزات جديدة ستساعد في كتابة تعليمات برمجية قوية وقوية.
أعزائي القراء! ما هي الأمثلة على الخطوط الأحادية JS المفيدة التي تضيفها إلى هذه المادة؟

