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

السؤال

Recommended Posts

  • 0
نشر (معدل)

أولاً التعليمة فيها خطأ إذ يجب أن تكون:

orderRange = Array.from(Array(blocks.length).keys())

وذلك ﻷن keys تابع وليس property.

واﻵن لنشرح تابع keys هذا بمثال، ضع هذه التعليمة في browser console :

const a = [1,2,3].keys()

اﻵن ضع a ليطبع لك المتصفح قيمته، سيطبع لك المتصفح :

Array Iterator {} 

ما هذا ؟ iterator هو ميزة جديدة في ES6 وهو عبارة عن object له method اسمه next باستدعاء هذا الـmethod تتولد قيمة جديدة حسب تعريف iterator ومعها متحول بولياني done والذي يخبرك هل هناك قيم جديدة يمكن توليدها أم لم يعد هناك.

 

دعنا نوضح هذا الـnext في مثالنا، نفذ التعليمة التالية:

a.next()

سيطبع لك المتصفح:

{value: 0, done: false}

نفذها مرةً أخرى وسيطبع لك:

{value: 1, done: false}

ومرةً أخرى:

{value: 2, done: false}

ومرة أخيرة:

{value: undefined, done: true}

لاحظ أن done صارت true مما يعني أنه لا توجد أي قيم جديدة، لاحظ أن القيم هي 0,1,2 وهي عبارة عن القيم من 0 إلى طول المصفوفة - 1.

 

وأيضاً كان يمكننا بدلاً من استدعاء next عدة مرات أن نستخدم for-of، نفذ تعليمة for هذه لتعلم ما أقصد:

for(const k of [1,2,3].keys()){
  console.log(k);
}

أما تابع Array.from فهو يحول أي iterator object إلى مصفوفة.

 

تعليمتك بالنتيجة ما هي إلى إنشاء مصفوفة قيمها من 0 إلى blocks.length - 1 فقط لا غير.

 

بالطبع iterator object ليس بالضرورة يولد قيماً من 0 إلى طول مصفوفة ما بل يمكنه توليد أي قيم ﻷي عدد من المرات وبعض iterator object تكون حتى لا نهائية أي done دائماً false ، ما يحدد ماذا يولد iterator object هو التابع الذي تستدعيه، في مثالك array.keys() يولد قيم من 0 إلى طول المصفوفة -1 أما في المثال التالي:

const s = new Set([1,5,3]).keys()

فالـiterator object سيولد 1,5,3.

تم التعديل في بواسطة أحمد حبنكة
  • 0
نشر

التابع keys يقوم بإنشاء كائن تكراري من مصفوفة ما، و هذا الكائن التكراري يحتوي المفاتيح"الفهارس" الخاصة بهذه المصفوفة.

لاحظ المثال التالي:

<!DOCTYPE html>
<html>
  <body>

    <h1>Array keys()</h1>

    <p>Create an Iteration Object from the fruit array.</p>

    <p>The Iteration object will contain the keys of the array:</p>

    <p id="demo"></p>

    <p><strong>Note:</strong> The keys method is not supported in IE 11 (and earlier versions).</p>

    <script>
      var fruits = ["Banana", "Orange", "Apple", "Mango"];
      var fruits_keys = fruits.keys();

      for (key of fruits_keys) {
        document.getElementById("demo").innerHTML += key + "<br>";
      }

    </script>

  </body>
</html>

الناتج:

5fc69d88e26f2_Annotation2020-12-01212444.thumb.jpg.2f617b3af11ec35e991bd7de899340ff.jpg

 

من استخدامات هذا التابع تحديد طول ال associative arrays في js، و ال  associative arrays هي كائنات JS  الفهارس الخاصة بها تكون سلاسل نصية string

لاحظ هذا المثال:

let shows = new Array();

shows["s1"] = "StrangerThings 1";
shows["s2"] = "StrangerThings 2";
shows["s3"] = "StrangerThings 3";

console.log(Object.keys(shows).length); // 3

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

  • 0
نشر
بتاريخ 9 ساعات قال Momen Gamal:

اول حاجة شرا علي التوضيح بس حضرتك بتجيب المعلومات منين او من مصادر ايه

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

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

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

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

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...