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

Chia chuỗi thành n phần bằng nhau - JavaScript

Viết hàm JavaScript nhận vào một chuỗi và số n (chiều dài chuỗi chia hết cho n). Trả về mảng chứa n chuỗi con có độ dài bằng nhau.

Ví dụ

const str = 'this is a sample string';
const num = 5;
// Độ dài 23, 23/5 = 4.6 → không chia hết!
// Code gốc có lỗi logic

Giải pháp (sửa lỗi)

Đảm bảo chia hết, dùng slice() trong vòng lặp đơn giản hơn reduce().

const str = 'this is a sample string'; // 23 ký tự
const num = 5; // Không chia hết 23/5

// Sửa: dùng chuỗi độ dài chia hết
const str2 = 'this is a sample text'; // 22 ký tự, chia 2 không hết
const str3 = 'this is sample text';   // 19 ký tự
// Cần chuỗi độ dài chia hết cho num

// Ví dụ đúng: 20 ký tự, chia 5 phần = 4 ký tự/phần
const strValid = 'thisisasamplestring!'; // 20 ký tự
const numValid = 5;

const divideEqual = (str, num) => {
  const len = str.length / num;
  if (!Number.isInteger(len)) {
    throw new Error('Chiều dài chuỗi phải chia hết cho n');
  }
  const result = [];
  for (let i = 0; i < num; i++) {
    result.push(str.slice(i * len, (i + 1) * len));
  }
  return result;
};

console.log(divideEqual(strValid, numValid));

Kết quả

[ 'this', 'isas', 'ampl', 'estr', 'ing!' ]

Lưu ý: Code gốc dùng reduce() phức tạp không cần thiết và có lỗi khi chuỗi không chia hết. Cách dùng slice() đơn giản, rõ ràng và hiệu quả hơn.