Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> JavaScript

Thay đổi vị trí từ cặp nhau trong chuỗi - JavaScript

Yêu cầu: Viết hàm JavaScript nhận vào một chuỗi và hoán đổi vị trí các từ liền kề (từ 1 ↔ từ 2, từ 3 ↔ từ 4, ...).

Ví dụ

Chuỗi đầu vào:

const str = "This is a sample string only";

Kết quả mong đợi:

"is This sample a only string"

Triển khai

const str = "This is a sample string only";

const replaceWords = str => {
  return str.split(" ").reduce((acc, val, ind, arr) => {
    if (ind % 2 === 1) {
      return acc; // Bỏ qua index lẻ (đã xử lý ở index chẵn trước đó)
    }
    // Ghép: từ tiếp theo + " " + từ hiện tại + " "
    acc += ((arr[ind + 1] || "") + " " + val + " ");
    return acc;
  }, "").trim(); // trim() để xóa khoảng trắng thừa cuối chuỗi
};

console.log(replaceWords(str));

Kết quả

is This sample a only string

Giải thích logic:

  • Tách chuỗi thành mảng từ bằng split(" ").
  • Duyệt qua mảng, ở các index chẵn (0, 2, 4...), lấy cặp [current, next] và ghép theo thứ tự ngược.
  • Index lẻ (1, 3, 5...) bị bỏ qua vì đã được xử lý trong cặp trước.
  • Cuối cùng dùng trim() để loại bỏ khoảng trắng thừa.

Cách viết ngắn gọn hơn (ES6):

const swapAdjacentWords = str =>
  str.split(" ")
     .map((word, i, arr) => i % 2 === 0 ? arr[i + 1] : arr[i - 1])
     .filter(Boolean)
     .join(" ");

console.log(swapAdjacentWords(str));