جافا سكريبت هي لغة متصفح ، لذلك ليس كلتحتاج المهمة إلى المتغيرات والمصفوفات والكائنات الخاصة بها. في كثير من الحالات ، من السهل جدًا استخدام DOM (نموذج كائن المستند). ولكن حتى في مثل هذه الحالات ، فإن الوصف الصحيح للبيانات المستخدمة دائمًا يجعل البرنامج أكثر تقدمًا وملاءمة للاستخدام والتنقيح اللاحق.
الكلمات مهمة ، ولكن عند تسمية برنامج ،ما هو قابل للاستخدام والتغيير ، فمن المناسب أن نقتصر على الكلمات "البيانات" و "المتغيرات". حسنًا ، ما سيكون عليه - صفيف JavaScript أو كائن أو عدد صحيح فقط - يعتمد على المهمة ، أو بالأحرى على المكان المحدد فيها.
يتم استخدام المبرمجين لمعالجة البيانات.حتى يومنا هذا ، كانت هناك متغيرات في مجموعة واسعة من التمثيلات (سلاسل ، أحرف ، أرقام ، تواريخ ...) ، كقاعدة ، تم وضع الصفائف والكائنات (في العقدين الماضيين) بشكل منفصل.
كتابة قوية في وقت معينأصبحت البيانات بقايا ، والآن في كل لغة حديثة ، يمكن لهذا أن يغير ليس فقط المحتوى ، ولكن أيضًا النوع. للأفضل أو للأسوأ ، سيتم رؤيته ، ولكن الكتابة الصارمة لها ميزاتها الإيجابية. ومع ذلك ، إذا حدث هذا ، فلماذا لا "مزق" العملية برمتها؟
بعبارات دلالية ، هذا أبعدبناء الجملة ، أي مسائل متغيرة. ويتغير في أي حالة. تسلسل التغييرات هو بالفعل كمية ، والتي من حيث JavaScript هي صفيف عنصر.
وبعبارة أخرى ، إذا قرر المبرمج عدم القيام بذلكلقد قمت بتعيين القيم لنوع المتغير مع الاهتمام بتحويل النوع المناسب وفي الوقت المناسب ، فلماذا لا تبسيطه على الإطلاق: هناك بيانات فقط ، حسنًا ، أي نوع من البيانات سيكون في نقطة التطبيق - رقم ، سلسلة ، صفيف أو كائن - هذا هو الرمز الذي يجب تحديده. والأكثر صحة: يجب أن يحدد هذا في حد ذاته ما يمكن القيام به وكيف بالضبط.
يتم تمثيل المتغيرات البسيطة بأنواع مختلفة. يتم تنفيذ تحويلات النوع تلقائيًا عند الحاجة.
يصف هذا المثال متغير بسيط s ، فيوالتي ستشكل نتيجة للعمل مع JavaScript Array aCheck. يتم وصف المتغير i مباشرة في دورة العمل باستخدام aCheck. هنا ، تكون عناصر المصفوفة (التي تم إنشاؤها باستخدام بناء JavaScript Array push) هي ثلاث قيم لأنواع مختلفة. الحلقة الأولى تطبع أسماء الأنواع في السلسلة s ، والثانية - القيم الفعلية. يتم تنفيذ تحويل النوع تلقائيًا.
في JavaScript ، Array ليس مصفوفة ارتباطية. يتم الوصول إلى العناصر عن طريق المفاتيح العددية ، والحد الأقصى لعدد العناصر هو 232، ولكن لا يجب أن تجرب الكميات المحددة.
تحتوي الخوارزمية الجيدة دائمًا على كمية متوقعة من البيانات ، ولا يتم إنشاء بنية طول JavaSscript في بناء الجملة للتحكم في حجم المصفوفة في سياق محتوياتها.
تحقق من القيمة.لن يكون الطول دائمًا العدد الفعلي للعناصر. في JavaScript ، قد تحتوي المصفوفة على الكثير مما تم إرساله هناك ، ولكن في بعض الأحيان يجب عليك العمل بجد لمعرفة المبلغ بالضبط.
في هذا المثال ، يقوم التعبير aCheck [5] بتوسيع الصفيف إلى ستة عناصر. لا يوجد مبرر للأمل في أن تعطي دالة الطول قيمة 4.
من الناحية الرسمية ، يمكن أن تكون مصفوفة JavaScript عادية فقط ، أي أنه يتم الوصول إلى العناصر بواسطة الفهارس الرقمية. ومع ذلك ، في الواقع ، يمكنك استخدام الأفكار الترابطية.
مهمة بسيطة وروتينية لفرز السلاسليمكن حل جداول الأعمدة من خلال مصفوفة ترابطية. تشير النقطة الموجودة في الدائرة بجوار اسم العمود إلى عدم وجود فرز ، السهم لأعلى - بترتيب تنازلي ، السهم لأسفل - بترتيب تصاعدي. يؤدي النقر فوق عمود إلى تغيير الاتجاه (تطبيق JavaScript: Sort Array).
في هذا المثال ، يتم تكوين cSortCols في الصفيفاتجاهات الترتيب لكل عمود (S ، C ، W ، ...). قيم الاتجاه هي فقط ش ، د. في for in الإنشاء ، يتم خياطة كل شيء في سطر واحد (كل من رمز العمود واتجاه الفرز). تبحث هذه الحلقة في جميع عناصر المصفوفة ، ولا توجد حاجة لاستخدام دالة طول مصفوفة JavaScript.
الممارسة الجيدة هي كتابة "var xMass = []؛" أو"var yArr = {}؛". في الحالة الأولى ، سيتم تحديد مصفوفة عادية ، في الحالة الثانية - ارتباطية. يمكنك أيضًا استخدام خيار JavaScript New Array () ، ولكن عادةً ما يتم استخدام هذا البناء لأغراض أخرى ، بشكل أساسي للعمل مع الكائنات.
يمكن تعبئة الصفيف الذي تم إنشاؤه على الفورالمتغيرات ، ولكن ، كقاعدة عامة ، ملء ومعالجة صفيف في ديناميات أثناء تنفيذ البرنامج ذات الصلة. إذا كنت بحاجة إلى الفرز ، يمكنك استخدام بنية JavaScript Sort Array ، وهي ليست مرنة ، ولكنها تتيح لك التحكم في العملية من خلال وظيفتها الخاصة.
يؤدي استدعاء: arr.sort () إلى الفرز في ترتيب الأحرف في جدول ASCII. الدالة العكسية هي تبديل العناصر: arr.reverse (). تعكس هذه الوظيفة ترتيب عناصر الصفيف.
في كلتا الحالتين ، تشير كلمة arr إلى صفيف.في الحالة الأولى ، يمكنك استخدام وظيفة الفرز الخاصة بك ، أي أن استدعاء arr.sort (myfunc (a، b)) سيؤدي إلى استدعاء وظيفتك الخاصة myfuct ، والتي يجب أن ترجع النتيجة اعتمادًا على البيانات: a و b. إذا كان الأول أقل من الثاني ، ثم -1 ، إذا كان العكس بالعكس ، ثم 1 ، وإذا a = b ، ثم 0. هنا ، يتم تحديد معيار المقارنة من قبل المبرمج في دالة myfunc.
قد يتم استدعاء وظيفة أثناء عملية الفرزتنفيذ إجراءات مختلفة. من وجهة نظر البناء الذي يتم تطبيقه فيه ، لا يجب أن تستجيب لمعلمات الإدخال ، ونتيجتها ليست فقط ثلاثة أرقام -1 و 1 و 0. كونها مطبقة بشكل دوري على كل عنصر في المصفوفة ، يمكنها إعادة بناء المصفوفة.
إذا كنت تتخيل أن المصفوفة لها معنى معين ، وهي بنية بيانات معينة ، فإن JavaScript Array يتحول إلى متغير بمحتوى متغير.
إذا أخذنا كأساس استخدام الأول أوالعنصر الأخير من الصفيف كمحتوياته ، يمكن أن يؤدي تنفيذ وظيفة الفرز إلى تحويل الصفيف بحيث يصبح العنصر الأول / الأخير عنصرًا مختلفًا ، حسب ما تتطلبه شروط المهمة.
مثل هذه الفكرة قد تسمح بإعادة بناء الخوارزمية.الحلول بهذه الطريقة ، على وجه الخصوص ، أنه لن تكون هناك حاجة لاستخدام if () {} آخر {} والتبديل () {الحالة "": builds: ...؛ قضية "": ...؛ ...}.
من خلال معالجة محتويات الصفيف ، يمكنك تحريك العناصر بداخله ، وبالتالي تغيير الوظيفة الخارجية التي يمكن الحصول عليها من خلال العنصر الأول أو الأخير.
كل لغة جيدة لأنها لا تسمح فقطتغيير بنية البيانات ومحتواها ، وكذلك تغيير الكود الفعلي. إن فكرة اعتبار المتغير تجريدًا ، أي دون توفير وضعه النموذجي في البداية ، تفتح آفاقًا جديدة.
بدءًا من التجريد أو المتغير أو المصفوفة أو الكائن يسمح لنا بتمثيل معالجة البيانات كدالة لهذه البيانات ، علاوة على ذلك ، في الديناميكيات.
على سبيل المثال ، عند قراءة النص ، يمكنك وصف هذا"النص" ، الذي سيتم تقسيمه إلى جمل - معيار "النقطة" (في السياق ، أي مع مراعاة بناء الجملة المقبولة). سيتم تقسيم الجمل إلى عبارات (في السياق والفاصلة والقواعد المقابلة). مزيد من الكلمات والحروف.
نتيجة:يمكنك العمل على مستوى النصوص والجمل والكلمات. في كل مستوى ، يمكنك إنشاء وظائف "التفرد" ، مما يسمح لك بالبحث عن ما شابه أو ما شابه. يمكنك إنشاء وظائف لتطبيق الجمل والعبارات على البيانات الأخرى.
البرمجة الحديثة لم تكن عقيدة لفترة طويلة ، ولكنحقيقة أن الإنشاءات النحوية التي تم إنشاؤها على مدى العقود الماضية والخبرة المتراكمة تفتح آفاقًا جديدة لا يتوقعها مطورو اللغة لا يزال يتعين اكتشافها واستخدامها.