مقدمة موجزة عن تدمير المصفوفات في ES6

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

يقوم بإنشاء نمط يصف نوع القيمة التي تتوقعها ويقوم بالمهمة. يستخدم تدمير الصفيف الموقع.

انظر أدناه رمز مقتطف.

var [first, second, third] = ["Laide", "Gabriel", "Jets"];

النحو مع التدمير.

var first = "laide", second = "Gabriel", third = "Jets";

بناء الجملة دون تدمير.

لا يمكنك استخدام Numbers للتدمير. ستظهر الأرقام خطأً لأن الأرقام لا يمكن أن تكون أسماء متغيرة.
var [1, 2, 3] = ["Laide", "Ola", "Jets"];

هذا النحو يلقي خطأ.

جعلت عملية التدمير استخراج البيانات من مصفوفة بسيطة للغاية ويمكن قراءتها. تخيل محاولة استخراج البيانات من مصفوفة متداخلة ذات 5 أو 6 مستويات. سيكون ذلك مملاً للغاية. يمكنك استخدام مصفوفة حرفية على الجانب الأيسر من المهمة.

var thing = ["Table", "Chair", "Fan"];var [a, b, c] = thing;

يأخذ كل متغير في المصفوفة حرفية على الجانب الأيسر ويرسمه إلى نفس العنصر في نفس الفهرس في المصفوفة.

console.log(a); // Output: Tableconsole.log(b); //Output: Chairconsole.log(c); //Output: Fan

يمكن أن يتم الإعلان والتخصيص بشكل منفصل في التدمير.

var first, second;[first, second] = ["Male", "Female"];

إذا كان عدد المتغيرات التي تم تمريرها إلى القيم الحرفية لصفيف التدمير أكبر من العناصر الموجودة في المصفوفة ، فإن المتغيرات التي لم يتم تعيينها لأي عنصر في المصفوفة تعودundefined.

var things = ["Table", "Chair", "Fan", "Rug"];var [a, b, c, d, e] = things;console.log(c); //Output: Fanconsole.log(d); //Output: Rugconsole.log(e); //Output: undefined

إذا كان عدد المتغيرات التي تم تمريرها إلى القيم الحرفية لصفيف التدمير أقل من العناصر الموجودة في المصفوفة ، فسيتم ترك العناصر التي لا تحتوي على متغيرات ليتم تعيينها. لا توجد أخطاء على الإطلاق.

var things = ["Table", "Chair", "Fan", "Rug"];var [a, b, c] = things;console.log(c); // Output: Fan

تدمير المصفوفات المرتجعة

يجعل التدمير العمل باستخدام دالة تُرجع مصفوفة كقيمة أكثر دقة. إنه يعمل مع جميع العناصر التكرارية.

function runners(){ return ["Sandra", "Ola", "Chi"];}
var [a, b, c] = runners();console.log(a); //Output: Sandraconsole.log(b); //Output: Olaconsole.log(c); //Output: Chi

القيمة الافتراضية

تسمح التدمير بتخصيص قيمة افتراضية لمتغير إذا لم يكن هناك قيمة أو undefinedتم تمريره. إنه مثل توفير احتياطي عندما لا يتم العثور على شيء.

var a, b;[a = 40, b = 4] = [];console.log(a); //Output: 40console.log(b); //Output: 4
[a = 40, b = 4] = [1, 23];console.log(a); //Output: 1console.log(b); //Output: 23

يمكن أن تشير القيم الافتراضية أيضًا إلى متغيرات أخرى بما في ذلك المتغيرات الموجودة في نفس المصفوفة الحرفية.

var [first = "Cotlin", second = first] = [];console.log(first); //Output: Cotlinconsole.log(second); //Output: Cotlin
var [first = "Cotlin", second = first] = ["Koku"];console.log(first); //Output: Kokuconsole.log(second); //Output: Koku
var [first = "Cotlin", second = first] = ["Koku", "Lydia"];console.log(first); //Output: Kokuconsole.log(second); //Output: Lydia

تجاهل بعض القيم

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

var a, b;[a, , b] = ["Lordy", "Crown", "Roses"];
console.log(a); //Output: Lordyconsole.log(b); //Output: Roses

معلمة الباقي وبناء الجملة

يمكن استخدام عامل التشغيل الجديد (...) الذي تمت إضافته في ES6 في التدمير. إذا ظهر عامل التشغيل (…) على الجانب الأيسر في عملية التدمير فهذا يعني أنه REST PARAMETER . يتم استخدام المعامل Rest لتعيين كل العناصر المتبقية في المصفوفة التي لم يتم تعيينها إلى متغير الباقي نفسه. إنه مثل جمع ما تبقى . يجب أن يكون المتغير Rest دائمًا هو الأخير وإلا تم طرح a.SyntaxError

var planets = ["Mercury", "Earth", "Venus", "Mars", "Pluto", "Saturn"];var [first, , third, ...others] = planets;
console.log(first); //Output: Mercuryconsole.log(third); //Output: Venusconsole.log(others); //Output: ["Mars", "Pluto", "Saturn"]

إذا ظهر عامل التشغيل (…) على الجانب الأيمن في عملية التدمير ، فهو عبارة عن SYNTAX . ذلكيأخذ جميع العناصر الأخرى في المصفوفة التي ليس لها متغير معين لها ثم يعينها للمتغير الباقي.

var planets = ["Mercury", "Earth", "Venus", "Mars", "Pluto", "Saturn"];
var [first, second, ...rest] = ["Mercury", "Earth", ...planets, "Saturn"];
console.log(first); //Output: Mercuryconsole.log(second); //Output: Earthconsole.log(rest); //Output: ["Venus", "Mars", "Pluto", "Saturn"]

عندما يكون لديك المزيد من المتغيرات على الجانب الأيسر ، فإنه يعين العناصر الفردية في المصفوفة بالتساوي مع المتغيرات.

var planets = ["Mercury", "Earth", "Venus", "Mars", "Pluto", "Saturn"];
var [first, second, ...rest] = ["Mercury", ...planets];
console.log(first); //Output: Mercuryconsole.log(second); //Output: Mercuryconsole.log(rest); //Output: ["Earth", "Venus", "Mars", "Pluto", "Saturn"]
var planets = ["Mercury", "Earth", "Venus", "Mars", "Pluto", "Saturn"];
var [first, second, third, fourth ...rest] = ["Mercury", "Earth", ...planets];
console.log(first); //Output: Mercuryconsole.log(second); //Output: Earthconsole.log(third); //Output: Mercuryconsole.log(fourth); //Output: Earthconsole.log(rest); //Output: ["Venus", "Mars", "Pluto", "Saturn"]

المتغيرات التبادلية أو المبادلة

يمكن استخدام تعبير تدمير واحد في مبادلة قيم متغيرين.

var a, b;[a, b] = ["Male", "Female"];[a, b] = [b, a];
console.log(a); //Output: Femaleconsole.log(b); //Output: Male

تدمير المصفوفة المتداخلة

يمكنك أيضًا إجراء إتلاف متداخل باستخدام المصفوفات. يجب أن يكون العنصر المقابل عبارة عن مصفوفة من أجل استخدام مصفوفة إتلاف متداخلة حرفية لتعيين عناصر فيه إلى المتغيرات المحلية.

var numbers = [8, [1, 2, 3], 10, 12];var [a, [d, e, f]] = numbers;
console.log(a); // Output: 8console.log(d); // Output: 1console.log(e); // Output: 2

تدمير المصفوفة المتعددة

يمكنك إتلاف مصفوفة أكثر من مرة في نفس مقتطف الشفرة.

var places = ["first", "second", "third", "fourth"];var [a, b, , d] = [f, ...rest] = places;
console.log(a); //Output: firstconsole.log(d); //Output: fourthconsole.log(f); //Output: firstconsole.log(rest); //Output: ["second", "third", "fourth"]

استنتاج

يمكنك نسخ ولصق الكود على موقع Babel الإلكتروني لترى كيف ستبدو الشفرة إذا لم يكن التدمير موجودًا. كنت ستكتب المزيد من سطور التعليمات البرمجية ، لكن التدمير يبسط كل شيء.