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 logicGiả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.