Rumah > hujung hadapan web > Soal Jawab bahagian hadapan > Bagaimana untuk membalikkan rentetan dalam es6

Bagaimana untuk membalikkan rentetan dalam es6

青灯夜游
Lepaskan: 2022-10-31 19:02:14
asal
1273 orang telah melayarinya

Kaedah pelaksanaan: 1. Gunakan fungsi split, reverse dan join, sintaks "str.split('').reverse().join('');" 2. Gunakan gelung menurun , sintaks "for(i=string length-1;i>=0;i--){nS =str[i];}"; 3. Gunakan rekursi, sintaks "fungsi f(s){return s= ==' '?'':f(s.substr(1)) s.charAt(0)}".

Bagaimana untuk membalikkan rentetan dalam es6

Persekitaran pengendalian tutorial ini: sistem Windows 7, ECMAScript versi 6, komputer Dell G3.

Terbalikkan rentetan ialah salah satu soalan JavaScript yang paling kerap ditanya dalam temu bual teknikal. Penemuduga mungkin meminta anda menggunakan pengekodan yang berbeza untuk membalikkan rentetan, atau mereka mungkin meminta anda untuk tidak menggunakan kaedah terbina dalam untuk membalikkan rentetan, atau meminta anda menggunakan rekursi untuk membalikkan rentetan.

Mungkin terdapat berpuluh-puluh cara berbeza untuk melakukan ini, kecuali kaedah terbalik terbina dalam, yang tidak tersedia pada objek String JavaScript

Begini caranya Saya menyelesaikannya Tiga cara paling menarik untuk membalikkan masalah rentetan dalam JavaScript.

Algoritma memerlukan

untuk membalikkan rentetan yang disediakan
Anda mungkin perlu menukar rentetan itu kepada tatasusunan sebelum anda boleh membalikkannya. <.>
Hasil anda mestilah rentetan.

function reverseString(str) {
    return str;
}
reverseString(&#39;hello&#39;);
Salin selepas log masuk
Sediakan kes ujian

  • reverseString(" hello ") harus kembali "olleh"
  • reverseString("Howdy") harus kembali "ydwoH"
  • reverseString("Salam dari Bumi") hendaklah mengembalikan "htraE morf sgniteerG"

1

Untuk penyelesaian ini, kami akan menggunakan tiga kaedah: kaedah String.prototype.split(), kaedah Array.prototype.reverse() dan kaedah Array.prototype.join() .

    Kaedah split() menggunakan rentetan pembatas yang ditentukan untuk membelah objek Rentetan kepada tatasusunan subrentetan, menggunakan rentetan pecahan yang ditentukan untuk menentukan kedudukan setiap pecahan
  • <🎜 Yang >terbalik () kaedah membalikkan kedudukan elemen dalam tatasusunan dan mengembalikan tatasusunan. Elemen pertama tatasusunan menjadi yang terakhir, dan elemen terakhir tatasusunan menjadi yang pertama. Kaedah ini akan menukar tatasusunan asal
  • kaedah join() menyertai semua elemen tatasusunan (atau objek seperti tatasusunan) ke dalam rentetan dan mengembalikan rentetan ini. Jika tatasusunan hanya mempunyai satu item, maka item tersebut akan dikembalikan tanpa menggunakan pembatas
function reverseString(str) {
    // Step 1. 使用 split()方法返回一个新数组
    var splitString = str.split(&#39;&#39;); // var splitString = "hello".split("");
    // ["h", "e", "l", "l", "o"]

    // Step 2.使用 reverse()方法 翻转数组
    var reverseArray = splitString.reverse(); // var reverseArray = ["h", "e", "l", "l", "o"].reverse();
    // ["o", "l", "l", "e", "h"]

    // Step 3.使用 join()方法 组合所有的数组元素,从而变成一个新字符串
    var joinArray = reverseArray.join(&#39;&#39;); // var joinArray = ["o", "l", "l", "e", "h"].join("");
    // "olleh"

    //Step 4. 返回翻转后的字符串
    return joinArray; // "olleh"
}

reverseString(&#39;hello&#39;);
Salin selepas log masuk
Tiga kaedah digabungkan untuk membentuk panggilan berantai:

function reverseString(str) {
    return str.split(&#39;&#39;).reverse().join(&#39;&#39;);
}
reverseString(&#39;hello&#39;);
Salin selepas log masuk

2. Terbalikkan rentetan menggunakan gelung menurun

function reverseString(str) {
    // Step 1. 创建一个空字符串,用来存储后面新创建的字符串
    var newString = &#39;&#39;;

    // Step 2.创建for循环
    /* 循环的起点是(str.length-1),它对应于
        字符串的最后一个字符“o”
        只要i大于或等于0,循环就会继续
        每次迭代后递减i */
    for (var i = str.length - 1; i >= 0; i--) {
        newString += str[i]; // or newString = newString + str[i];
    }
    /* "hello"的length等于 5
        每次循环的公式: i = str.length - 1 and newString = newString + str[i]
        第一次循环:   i = 5 - 1 = 4,         newString = "" + "o" = "o"
        第二次循环:   i = 4 - 1 = 3,         newString = "o" + "l" = "ol"
        第三次循环:   i = 3 - 1 = 2,         newString = "ol" + "l" = "oll"
        第四次循环:   i = 2 - 1 = 1,         newString = "oll" + "e" = "olle"
        第五次循环:   i = 1 - 1 = 0,         newString = "olle" + "h" = "olleh"
    结束for循环*/

    // Step 3. 返回已翻转的字符串
    return newString; // "olleh"
}

reverseString(&#39;hello&#39;);
Salin selepas log masuk
Alih keluar ulasan:

function reverseString(str) {
    var newString = &#39;&#39;;
    for (var i = str.length - 1; i >= 0; i--) {
        newString += str[i];
    }
    return newString;
}
reverseString(&#39;hello&#39;);
Salin selepas log masuk

3. Rentetan terbalik menggunakan rekursiUntuk penyelesaian ini kami akan menggunakan dua kaedah: kaedah String.prototype.substr() dan String .prototype Kaedah .charAt()

kaedah substr() mengembalikan aksara bermula dari kedudukan yang ditentukan kepada bilangan aksara yang ditentukan dalam rentetan.
  • Nota Penterjemah:

Walaupun String.prototype.substr(…) tidak ditamatkan sepenuhnya (seperti dalam "dialih keluar daripada standard Web"), ia dianggap sebagai fungsi warisan dan harus dielakkan jika boleh. Ia bukan sebahagian daripada bahasa JavaScript teras dan mungkin dialih keluar pada masa hadapan. Jika boleh, gunakan subrentetan() sebaliknya.

&#39;hello&#39;.substr(1); // "ello"
Salin selepas log masuk
Kaedah charAt() mengembalikan aksara yang ditentukan daripada rentetan.
The kedalaman rekursi adalah sama dengan panjang String. Apabila String sangat panjang dan saiz tindanan adalah isu utama, kod berjalan dengan sangat perlahan. Jadi penyelesaian ini bukanlah penyelesaian terbaik
&#39;hello&#39;.charAt(0); // "h"
Salin selepas log masuk

function reverseString(str) {
  if (str === "") // 如果传入空字符串,则直接返回它
    return "";
  else
    return reverseString(str.substr(1)) + str.charAt(0);
/*
递归方法的第一部分
你需要记住不会只有一次回调,会存在多次嵌套回调
每次回调的公式: str === "?"                         reverseString(str.subst(1))     + str.charAt(0)
1st call – reverseString("Hello")   will return   reverseString("ello")           + "h"
2nd call – reverseString("ello")    will return   reverseString("llo")            + "e"
3rd call – reverseString("llo")     will return   reverseString("lo")             + "l"
4th call – reverseString("lo")      will return   reverseString("o")              + "l"
5th call – reverseString("o")       will return   reverseString("")               + "o"
递归方法的第二部分
该方法达一旦到if条件,嵌套最深的调用会立即返回
*/
Salin selepas log masuk
Padamkan ulasan:

function reverseString(str) {
    if (str === &#39;&#39;) return &#39;&#39;;
    else return reverseString(str.substr(1)) + str.charAt(0);
}
reverseString(&#39;hello&#39;);
Salin selepas log masuk
Gunakan ungkapan ternary:

function reverseString(str) {
    return str === &#39;&#39; ? &#39;&#39; : reverseString(str.substr(1)) + str.charAt(0);
}
reverseString(&#39;hello&#39;);
Salin selepas log masuk
JavaScript String Reverse

ialah algoritma kecil dan mudah yang mungkin ditanya tentang anda semasa skrin telefon teknikal atau temu bual teknikal. Anda boleh menyelesaikan masalah ini dengan cara yang paling mudah, atau dengan penyelesaian rekursif atau lebih kompleks. [Cadangan berkaitan:

tutorial video javascript

, Video pengaturcaraan]

Atas ialah kandungan terperinci Bagaimana untuk membalikkan rentetan dalam es6. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan