Giả sử chúng ta có mảng số được biểu diễn bằng chuỗi như sau:
const arr = ["1.1","1.2","1.3","2.1","2.2","3.1","3.2","3.3","4.1","4.2"];
Chúng ta cần viết hàm JavaScript nhận mảng như vậy và nhóm tất cả chuỗi bắt đầu bằng cùng số vào một mảng con chung.
Vì vậy, đầu ra hàm nên trông như:
const output = [["1.1","1.2","1.3"],["2.1","2.2"],["3.1","3.2","3.3"],["4.1","4.2"]];
Ví dụ
Mã cho việc này:
const arr = ["1.1","1.2","1.3","2.1","2.2","3.1","3.2","3.3","4.1","4.2"]; const groupSimilarStarters = arr => { let res = []; res = arr.reduce((acc, val, ind) => { const firstChar = el => { return (el || '').split('.')[0]; } if(firstChar(val) === firstChar(arr[ind - 1])){ acc[acc.length - 1].push(val); }else{ acc.push([val]); }; return acc; }, []); return res; } console.log(groupSimilarStarters(arr));Đầu ra
Kết quả trên console:
[ [ '1.1', '1.2', '1.3' ], [ '2.1', '2.2' ], [ '3.1', '3.2', '3.3' ], [ '4.1', '4.2' ] ]