Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> JavaScript

Nhóm mảng theo giá trị bằng nhau JavaScript

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] ]