Chia mảng thành các khối (chunks) trong JavaScript
Chúng ta cần viết một hàm, ví dụ chunk(), nhận vào một mảng arr các giá trị nguyên thủy string/number làm đối số đầu tiên và một số n làm đối số thứ hai.
Chúng ta cần trả về một mảng gồm n mảng con, mỗi mảng con chứa tối đa:
arr.length / n phần tử.
Phân phối các phần tử nên như sau:
Phần tử đầu tiên vào mảng con thứ nhất, thứ hai vào mảng con thứ hai, thứ ba vào mảng con thứ ba, v.v. Khi mỗi mảng con đã có một phần tử, chúng ta lại bắt đầu điền phần tử thứ hai vào mảng con thứ nhất. Tương tự, khi tất cả mảng con đã có hai phần tử thì mới điền phần tử thứ ba vào mảng con thứ nhất, v.v.
Ví dụ: Nếu mảng đầu vào là:
const input = [656, 756, 5345, 67, 43, 76, 54, 768, 34];
Và số n là 3,
Thì kết quả đầu ra nên là:
const output = [ [ 656, 67, 54 ], [ 756, 43, 768 ], [ 5345, 76, 34 ] ];
Do đó, hãy viết mã cho hàm này:
Chúng ta sẽ dùng phương thức Array.prototype.reduce() trên mảng gốc để xây dựng mảng mong muốn.
Ví dụ
Mã thực hiện như sau:
const input = [656, 756, 5345, 67, 43, 76, 54, 768, 34];
const divideArray = (arr, size) => {
return arr.reduce((acc, val, ind) => {
const subIndex = ind % size;
if(!Array.isArray(acc[subIndex])){
acc[subIndex] = [val];
}else{
acc[subIndex].push(val);
};
return acc;
}, []);
};
console.log(divideArray(input, 3));
Đầu ra
Kết quả trong console sẽ là:
[ [ 656, 67, 54 ], [ 756, 43, 768 ], [ 5345, 76, 34 ] ]