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

ما هو المصفوفة في Javaالبرنامج النصي؟
المصفوفة هي كائن يمكنه تخزين ملف مجموعة من العناصرتُصبح المصفوفات مفيدة للغاية عند الحاجة إلى تخزين كميات كبيرة من البيانات من النوع نفسه. لنفترض أنك تريد تخزين بيانات 500 موظف. إذا كنت تستخدم متغيرات، فسيتعين عليك إنشاء 500 متغير، بينما يمكنك فعل الشيء نفسه باستخدام مصفوفة واحدة. يمكنك الوصول إلى عناصر المصفوفة بالرجوع إلى عناصرها. رقم الفهرسويكون فهرس العنصر الأول في المصفوفة صفرًا.
على عكس المصفوفات في اللغات ذات الكتابة الصارمة، فإن Javaمصفوفة البرمجة النصية ديناميكية. يزداد طولها تلقائيًا عند إضافة عنصر جديد، ويمكن لمصفوفة واحدة أن تحتوي على سلاسل نصية، وأرقام، وقيم منطقية، وكائنات، وحتى مصفوفات أخرى في الوقت نفسه. هذه المرونة تجعل المصفوفات الحاوية الافتراضية لبيانات القوائم في نصوص المتصفح البرمجية ورموز جانب الخادم على حد سواء.
كيفية إنشاء مصفوفة في Javaسيناريو
يمكنك إنشاء مصفوفة في Javaسيناريو على النحو المبين أدناه.
var students = ["John", "Ann", "Kevin"];
هنا، تقوم بتهيئة المصفوفة الخاصة بك عند إنشائها بالقيم "John" و"Ann" و"Kevin". مؤشر "جون" و"آن" و"كيفن" هو 0 و1 و2 على التوالي. إذا كنت تريد إضافة المزيد من العناصر إلى مصفوفة الطلاب، فيمكنك القيام بذلك على النحو التالي:
students[3] = "Emma"; students[4] = "Rose";
يمكنك أيضًا إنشاء مصفوفة باستخدام مُنشئ المصفوفة على النحو التالي:
var students = new Array("John", "Ann", "Kevin");
OR
var students = new Array(); students[0] = "John"; students[1] = "Ann"; students[2] = "Kevin";
كيفية الوصول إلى عناصر المصفوفة وتعديلها
يوجد كل عنصر في موضع مرقم. تُستخدم صيغة الأقواس المربعة لقراءة قيمة، أو تعيين قيمة جديدة، أو إضافة إدخال جديد عندما يساوي الفهرس الطول الحالي.
let students = ["John", "Ann", "Kevin"]; console.log(students[0]); // John - first element console.log(students[students.length - 1]); // Kevin - last element students[1] = "Anna"; // replace an existing value students[3] = "Emma"; // append a new value console.log(students); // ["John", "Anna", "Kevin", "Emma"] console.log(students.length); // 4 console.log(students[9]); // undefined - index does not exist
⚠️ تحذير: يؤدي تعيين قيمة لفهرس يتجاوز الطول الحالي بكثير إلى إنشاء مصفوفة متفرقة مليئة بالخانات الفارغة. استخدم push() بدلاً من استخدام فهرس متجاوز، بحيث تظل المصفوفة كثيفة ويمكن التنبؤ بها.
Javaطرق مصفوفة النصوص
يحتوي كائن Array على العديد من الخصائص والأساليب التي تساعد المطورين على التعامل مع المصفوفات بسهولة وكفاءة. يمكنك الحصول على قيمة الخاصية عن طريق تحديد arrayname.property ومخرجات الطريقة عن طريق تحديد arrayname.method().
- خاصية الطول -> إذا كنت تريد معرفة عدد العناصر في المصفوفة، يمكنك استخدام خاصية الطول.
- خاصية النموذج الأولي -> إذا كنت تريد إضافة خصائص وأساليب جديدة، يمكنك استخدام خاصية النموذج الأولي.
- طريقة عكسية -> يمكنك عكس ترتيب العناصر في المصفوفة باستخدام الطريقة العكسية.
- طريقة الفرز يمكنك فرز العناصر في مصفوفة باستخدام طريقة الفرز.
- طريقة البوب -> يمكنك إزالة العنصر الأخير من المصفوفة باستخدام طريقة pop.
- طريقة التحول –> يمكنك إزالة العنصر الأول من المصفوفة باستخدام طريقة الإزاحة.
- طريقة الدفع -> يمكنك إضافة قيمة كعنصر أخير في المصفوفة.
يصنف الجدول المرجعي أدناه الطرق الأكثر استخدامًا حتى تتمكن من رؤية أي منها يغير المصفوفة الأصلية وأي منها يعيد قيمة جديدة بنظرة سريعة.
| الأسلوب | الهدف | سياسات الإرجاع والاستبدال | تغييرات المصفوفة الأصلية |
|---|---|---|---|
| إدفع() | أضف عنصرًا واحدًا أو أكثر إلى النهاية | طول جديد | نعم |
| pop () | قم بإزالة العنصر الأخير | العنصر المحذوف | نعم |
| unshift () | أضف عنصرًا واحدًا أو أكثر إلى المقدمة | طول جديد | نعم |
| تحول() | قم بإزالة العنصر الأول | العنصر المحذوف | نعم |
| لصق او جمع() | أضف أو احذف عناصر في أي موضع | مصفوفة العناصر المحذوفة | نعم |
| فرز() | اطلب المنتجات | المصفوفة المرتبة | نعم |
| عكس () | اعكس ترتيب العناصر | المصفوفة المعكوسة | نعم |
| شريحة() | انسخ جزءًا من المصفوفة | مصفوفة جديدة | لا |
| concat () | ضم مصفوفتين أو أكثر | مصفوفة جديدة | لا |
| انضم() | قم بدمج العناصر في سلسلة نصية | خيط | لا |
| دليل ل() | حدد موضع قيمة ما | المؤشر أو -1 | لا |
| يتضمن() | اختبر ما إذا كانت القيمة موجودة | صحيحة أو خاطئة | لا |
إضافة وإزالة العناصر
let fruits = ["apple", "banana"]; fruits.push("cherry"); // ["apple", "banana", "cherry"] fruits.unshift("mango"); // ["mango", "apple", "banana", "cherry"] fruits.pop(); // ["mango", "apple", "banana"] fruits.shift(); // ["apple", "banana"] // splice(startIndex, deleteCount, ...itemsToInsert) fruits.splice(1, 0, "kiwi"); // ["apple", "kiwi", "banana"] console.log(fruits);
البحث والنسخ والربط
let colors = ["red", "green", "blue", "green"]; console.log(colors.indexOf("green")); // 1 - first match only console.log(colors.lastIndexOf("green")); // 3 console.log(colors.includes("pink")); // false console.log(colors.slice(1, 3)); // ["green", "blue"] console.log(colors.join(" | ")); // red | green | blue | green console.log(colors.concat(["black"])); // new array, colors unchanged
أساليب التكرار: forEach، map، filter، و reduce
بلمسة عصرية Javaيفضل البرنامج النصي الطرق التي تعتمد على ردود الاتصال على حلقات الفهرسة اليدوية، لأن الغرض من العملية مذكور مباشرة في اسم الطريقة.
const scores = [45, 72, 88, 31, 95]; scores.forEach(s => console.log(s)); // prints each score const doubled = scores.map(s => s * 2); // [90, 144, 176, 62, 190] const passed = scores.filter(s => s >= 50); // [72, 88, 95] const total = scores.reduce((sum, s) => sum + s, 0); // 331 const first = scores.find(s => s > 80); // 88 console.log(doubled, passed, total, first);
💡 نصيحة: الافتراضي sort() يحوّل العناصر إلى سلاسل نصية، لذا [10, 9, 100].sort() عائدات [10, 100, 9]مرر دالة مقارنة مثل sort((a, b) => a - b) لترتيب الأرقام بشكل صحيح.
Javaمثال على مصفوفة البرامج النصية مع المصدر Code
يقوم البرنامج النصي أدناه بإنشاء مصفوفة للطلاب، وإضافة دالة عرض مخصصة من خلال خاصية النموذج الأولي، ثم يعرض عمليات الطول والفرز والعكس والحذف والإضافة بالتسلسل. جرب ذلك بنفسك:
<html>
<head>
<title>Arrays!!!</title>
<script type="text/javascript">
var students = new Array("John", "Ann", "Aaron", "Edwin", "Elizabeth");
Array.prototype.displayItems=function(){
for (i=0;i<this.length;i++){
document.write(this[i] + "<br />");
}
}
document.write("students array<br />");
students.displayItems();
document.write("<br />The number of items in students array is " + students.length + "<br />");
document.write("<br />The SORTED students array<br />");
students.sort();
students.displayItems();
document.write("<br />The REVERSED students array<br />");
students.reverse();
students.displayItems();
document.write("<br />THE students array after REMOVING the LAST item<br />");
students.pop();
students.displayItems();
document.write("<br />THE students array after PUSH<br />");
students.push("New Stuff");
students.displayItems();
</script>
</head>
<body>
</body>
</html>
الناتج المتوقع:
students array John Ann Aaron Edwin Elizabeth The number of items in students array is 5 The SORTED students array Aaron Ann Edwin Elizabeth John The REVERSED students array John Elizabeth Edwin Ann Aaron THE students array after REMOVING the LAST item John Elizabeth Edwin Ann THE students array after PUSH John Elizabeth Edwin Ann New Stuff
لاحظ أن عملية الفرز تضع "آرون" قبل "آن" لأن الأحرف الكبيرة والصغيرة تُقارن برموزها. لاحظ أيضًا أن عملية الحذف أزالت "آرون" من المصفوفة المعكوسة، مما يؤكد أن كلاً من الفرز والعكس قد غيّرا المصفوفة الأصلية في مكانها.
كيفية تكرار العملية Javaمصفوفة البرامج النصية
أربعة مراحيضping تتوفر أنماط مختلفة، وكل نمط يناسب حالة معينة. تمنح حلقة for الكلاسيكية تحكمًا كاملاً في الفهرس، بينما تقرأ حلقة for…of القيم مباشرةً، وتعبر حلقة forEach عن الغرض بوضوح، أما حلقة for…in فينبغي استخدامها لخصائص الكائنات.
const cities = ["Paris", "Tokyo", "Cairo"]; // 1. Classic for loop - index is available for (let i = 0; i < cities.length; i++) { console.log(i + ": " + cities[i]); } // 2. for...of loop - value is available for (const city of cities) { console.log(city); } // 3. forEach with index parameter cities.forEach((city, index) => console.log(index, city)); // 4. entries() when both index and value are needed for (const [index, city] of cities.entries()) { console.log(index, city); }
يُمكن الاطلاع على شرحٍ مُفصّلٍ لبنية الحلقات، بما في ذلك while و do…while، في المقال المُخصّص لـ كيفية استخدام الحلقات في Javaسيناريو.
المصفوفات متعددة الأبعاد في Javaسيناريو
Javaلا يوجد نوع مصفوفة مخصص في لغة البرمجة النصية. الشبكة هي ببساطة مصفوفة عناصرها عبارة عن مصفوفات، ويتم استخدام تعبيرين للفهرسة للوصول إلى خلية واحدة.
const matrix = [ [1, 2, 3], [4, 5, 6], [7, 8, 9] ]; console.log(matrix[1][2]); // 6 - row index 1, column index 2 for (const row of matrix) { console.log(row.join(" ")); } // flatten a nested array into a single level console.log(matrix.flat()); // [1, 2, 3, 4, 5, 6, 7, 8, 9]
الإخراج:
6 1 2 3 4 5 6 7 8 9 [1, 2, 3, 4, 5, 6, 7, 8, 9]
تظهر المصفوفات في كل برنامج نصي عملي تقريبًا، بدءًا من التحقق من صحة النماذج وحتى عرض البيانات. تابع مع عملي Javaأمثلة على أكواد البرمجة النصية، إعادة النظر Javaسلاسل البرمجة النصية للحصول على معلومات حول معالجة النصوص، واقرأ المزيد داخلي وخارجي Javaسيناريو لتحديد مكان هذه البرامج النصية في الصفحة. يمكن للمطورين الذين يرغبون في التحقق الثابت من أنواع البيانات لمحتويات المصفوفة الانتقال إلى... TypeScript البرنامج التعليمي.
