Cho mảng chứa giá trị trùng lặp, viết hàm groupSimilar() trả về mảng mới với các mục trùng lặp gom vào mảng con: phần tử đầu là giá trị, phần tử thứ hai là số lần xuất hiện.
Ví dụ:
// Input: ['day', 'night', 'afternoon', 'night', 'noon', 'night', 'noon', 'day', 'afternoon', 'day', 'night']// Output: [['day', 3], ['night', 4], ['afternoon', 2], ['noon', 2]]
Sử dụng reduce() và Map:
Ví dụ
const array = ['day', 'night', 'afternoon', 'night', 'noon', 'night', 'noon', 'day', 'afternoon', 'day', 'night'];const groupSimilar = arr => { return arr.reduce((acc, val) => { const { data, map } = acc; const ind = map.get(val); if (map.has(val)) { data[ind][1]++; } else { map.set(val, data.push([val, 1]) - 1); } return { data, map }; }, { data: [], map: new Map() }).data;};console.log(groupSimilar(array));Kết quả
Đầu ra trong console sẽ là:
[ ['day', 3], ['night', 4], ['afternoon', 2], ['noon', 2] ]