Giả sử chúng ta có mảng hai chiều số như sau:
const arr = [ [1, 3, 2], [5, 2, 1, 4], [2, 1] ];
Chúng ta cần viết hàm JavaScript nhóm tất cả số giống nhau vào mảng con riêng, sau đó sắp xếp mảng nhóm để các mảng con theo thứ tự tăng dần.
Vì vậy, mảng mới cuối cùng nên trông như:
const output = [ [1, 1, 1], [2, 2, 2], [4], [3], [5] ];
Ví dụ
Mã cho việc này:
const arr = [ [1, 3, 2], [5, 2, 1, 4], [2, 1] ]; const groupAndSort = arr => { const res = []; const map = Object.create(null); Array.prototype.forEach.call(arr, item => { item.forEach(el => { if (!(el in map)) { map[el] = []; res.push(map[el]); }; map[el].push(el); }); }); res.sort((a, b) => { return a[0] - b[0]; }); return res; }; console.log(groupAndSort(arr));Đầu ra
Kết quả trên console:
[ [ 1, 1, 1 ], [ 2, 2, 2 ], [ 3 ], [ 4 ], [ 5 ] ]