Abdelrehman Elsied نشر 8 يونيو أرسل تقرير نشر 8 يونيو سلام عليكم. في الكود البرمجي التالي: الذي تمرر له نص و يمر علي كل الحروف في النص و يكررها أي اذا أدخلت له 'text' ستكون 'tteexxtt' أو 'hello' ستكون 'hheelllloo'. // Double String :: string >> ssttrriinngg let txt = "hello"; let txtAfter = ''; for(let item of txt){ for(let i=0; i<2; i++) txtAfter+=item; } console.log(txtAfter); يمكن حل المسئله بطريقه اخري: اذ يمكن المرور علي كل العناصر و نسخها. let txt = 'hello'; for(let i of txt){ txt.splice(i, 0, txt[i]); } لكن splice لا تعمل مع النصوص. هل هناك بديل؟ 1 اقتباس
0 محمد_عاطف نشر 8 يونيو أرسل تقرير نشر 8 يونيو وعليكم السلام ورحمة الله وبركاته. نعم بالفعل يوجد الكثير من الحلول الأخرى بدلا من إستخدام splice مع النصوص وذلك لأن النصوص (strings) غير قابلة للتغيير (immutable) ولا تحتوي على دالة splice كما في المصفوفات. ويوجد حل وذلك من خلال أولا تحويل النص إلى مصفوفة (array) من خلال إستخدام split وبعد ذلك يمكنك استخدام splice وأخيرا تحويل المصفوفة مرة أخرى إلى نص.هكذا : let txt = 'hello'; let txt_arr = txt.split(''); // تحويل النص إلى مصفوفة من خلال تفكيك الأحرف إلى عناصر في المصفوفة for (let i = 0; i < txt_arr.length; i += 2) { // التكرار على طول المصفوفة ولكن قمنا بزيادة العداد بمقدار 2 لأنه يتم إضافة عنصر جديد txt_arr.splice(i, 0, txt_arr[i]); // إضافة الحرف مرة أخرى في الموضع الحالي } let new_txt = txt_arr.join(''); // تحويل المصفوفة إلى نص console.log(new_txt); // "hheelllloo" حيث أولا إستخدمنا txt.split('') لتحويل النص إلى مصفوفة من الحروف. ومن ثم نستخدم حلقة for للتكرار خلال المصفوفة مع زيادة الفهرس بمقدار 2 في كل خطوة لأننا نضيف حرف جديد في كل مرة. وأخيرا نقوم بإستخدام join('') لتجميع عناصر المصفوفة إلى نص مرة أخرى. 1 اقتباس
0 بلال زيادة نشر 9 يونيو أرسل تقرير نشر 9 يونيو الكود الثاني الذي قدمته يحاول استخدام splice على نص (string)، لكن splice هي دالة خاصة بالمصفوفات (arrays) في JavaScript وليست بالنصوص. النصوص في JavaScript غير قابلة للتعديل (immutable)، لذا لا يمكن استخدام دوال مثل splice عليها مباشرة. ومع ذلك، يمكن تحقيق الهدف بطرق أخرى لتكرار الحروف في النص. الحلول البديلة: تحويل النص إلى مصفوفة ثم استخدام splice يمكنك تحويل النص إلى مصفوفة من الحروف باستخدام split('')، ثم استخدام splice لإدراج الحروف، وأخيرًا إعادة تحويل المصفوفة إلى نص باستخدام join(''). لكن هذا قد يكون معقدًا قليلاً لهذا الهدف، لأنك ستحتاج إلى تعديل المؤشر أثناء الإدراج. بدلاً من ذلك، إليك طريقة أبسط باستخدام مصفوفة: let txt = 'hello'; let txtArray = txt.split(''); // تحويل النص إلى مصفوفة let result = []; for (let i = 0; i < txtArray.length; i++) { result.push(txtArray[i], txtArray[i]); // إضافة كل حرف مرتين } let txtAfter = result.join(''); // تحويل المصفوفة إلى نص console.log(txtAfter); // الناتج: hheelllloo استخدام map أو reduce يمكن استخدام دوال JavaScript الوظيفية مثل map لتبسيط العملية: let txt = 'hello'; let txtAfter = txt.split('').map(char => char + char).join(''); console.log(txtAfter); // الناتج: hheelllloo txt.split(''): يحول النص إلى مصفوفة من الحروف. map(char => char + char): يكرر كل حرف بإضافته مرة أخرى. join(''): يحول المصفوفة إلى نص مرة أخرى. استخدام repeat JavaScript توفر دالة repeat التي تتيح تكرار سلسلة معينة. يمكن استخدامها مع map أو مباشرة: let txt = 'hello'; let txtAfter = txt.split('').map(char => char.repeat(2)).join(''); console.log(txtAfter); // الناتج: hheelllloo اقتباس
السؤال
Abdelrehman Elsied
سلام عليكم.
في الكود البرمجي التالي: الذي تمرر له نص و يمر علي كل الحروف في النص و يكررها أي اذا أدخلت له 'text' ستكون 'tteexxtt' أو 'hello' ستكون 'hheelllloo'.
يمكن حل المسئله بطريقه اخري: اذ يمكن المرور علي كل العناصر و نسخها.
لكن splice لا تعمل مع النصوص. هل هناك بديل؟
2 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.