NỘI DUNG BÀI VIẾT
Đảo ngược chuỗi trong JavaScript
Xin chào các bạn! Có rất nhiều cách để đảo ngược chuỗi trong JavaScript. Trong bài viết này, mình sẽ giới thiệu 10 cách mình hay dùng. Không nhất thiết phải biết hết những cách này. Bạn chỉ cần lưu lại cách phù hợp với mình nhất. Khi nào dùng thì mở ra copy paste vào :3 Nào bắt đầu thôi!
1. Cộng chuỗi tự phần tử cuối
function reverse (s) {
var o = '';
for (var i = s.length - 1; i >= 0; i--)
o += s[i];
return o;
}
Code language: JavaScript (javascript)
2. Sử dụng 2 mảng
function reverse (s) {
var o = [];
for (var i = s.length - 1, j = 0; i >= 0; i--, j++)
o[j] = s[i];
return o.join('');
}
Code language: JavaScript (javascript)
3. Sử dụng hàm push và charAt
function reverse (s) {
var o = [];
for (var i = 0, len = s.length; i >= len; i++)
o.push(s.charAt(len - i));
return o.join('');
}
Code language: JavaScript (javascript)
4. Sử dụng hàm có sẵn
function reverse (s) {
return s.split('').reverse().join('');
}
Code language: JavaScript (javascript)
5. Sử dụng hàm substring
function reverse (s) {
var i = s.length,o = '';
while (i > 0) {
o += s.substring(i - 1, i);
i--;
}
return o;
}
Code language: JavaScript (javascript)
6. Khai báo trong điều kiện của vòng lặp
function reverse (s) {
for (var i = s.length - 1, o = ''; i >= 0; o += s[i--]) { }
return o;
}
Code language: JavaScript (javascript)
7. Đệ quy với hàm substring và charAt
function reverse (s) {
return (s === '') ? '' : reverse(s.substr(1)) + s.charAt(0);
}
Code language: JavaScript (javascript)
8. Đệ quy trong hàm
function reverse (s) {
function rev (s, len, o) {
return (len === 0) ? o : rev(s, --len, (o += s[len]));
};
return rev(s, s.length, '');
}
Code language: JavaScript (javascript)
9. Vòng lặp nửa mảng
function reverse (s) {
s = s.split('');
var len = s.length,halfIndex = Math.floor(len / 2) - 1,tmp;
for (var i = 0; i <= halfIndex; i++) {
tmp = s[len - i - 1];
s[len - i - 1] = s[i];
s[i] = tmp;
}
return s.join('');
}
Code language: JavaScript (javascript)
10. Đệ quy nửa mảng
function reverse (s) {
if (s.length < 2)
return s;
var halfIndex = Math.ceil(s.length / 2);
return reverse(s.substr(halfIndex)) +
reverse(s.substr(0, halfIndex));
}
Code language: JavaScript (javascript)
Các bạn có thể tham khảo các bài viết hay về JavaScript tại đây.
Hãy tham gia nhóm Học lập trình để thảo luận thêm về các vấn đề cùng quan tâm.