Chúng ta cần viết một hàm JavaScript nhận vào bất kỳ số lượng mảng nào và trả về một mảng duy nhất chứa tất cả các giá trị từ các mảng đầu vào được nối tiếp nhau.
Ví dụ
Các mảng đầu vào:
[1, 5], [44, 67, 3], [2, 5], [7], [4], [3, 7], [6]
Đầu ra mong đợi:
const output = [1, 5, 44, 67, 3, 2, 5, 7, 4, 3, 7, 6];
Giải pháp
Sử dụng rest parameters và reduce kết hợp concat:
const a = [1, 5], b = [44, 67, 3], c = [2, 5], d = [7], e = [4], f = [3, 7], g = [6];
const concatArrays = (...arr) => {
const res = arr.reduce((acc, val) => {
return acc.concat(...val);
}, []);
return res;
};
console.log(concatArrays(a, b, c, d, e, f, g));
Kết quả
Đầu ra trong console:
[1, 5, 44, 67, 3, 2, 5, 7, 4, 3, 7, 6]
Lưu ý: Có thể dùng [].concat(...arr) hoặc arr.flat() (ES2019) để ngắn gọn hơn.