Sobes.tech
Middle

// Массивтердің стандартты әдістерін кеңейтетін groupBy әдісін жүзеге асыру қажет. // Бұл әдіс массивтің топтастырылған нұсқасын қайтарады — объект, // оның кілттері — шақырылатын функцияның нәтижесіндегі массив элементтері, // ал мәндері — сол кілтпен сәйкес келетін барлық бастапқы массив элементтерін қамтитын массивтер. // код осында // Мысал 1 const array1 = [ { id: 1 }, { id: 1 }, { id: 2 } ]; const fn = (item) => item.id; console.log(array1.groupBy(fn)); // { // 1: [{ id: 1 }, { id: 1 }], // 2: [{ id: 2 }] // } // Мысал 2 const array2 = [1, 2, 3]; console.log(array2.groupBy(String)); // { // "1": [1], // "2": [2], // "3": [3] // } // Мысал 3 const array3 = [1.3, 0.5, 1.4]; console.log(array3.groupBy(Math.round)); // { // 1: [0.5, 1.4], // 3: [1.3] // }

sobes.tech AI

AI-дан жауап

JavaScript-те массивтің стандартты әдістерін кеңейту үшін, Array прототипіне groupBy әдісін қосуға болады. Бұл әдіс әр элемент үшін кілтті есептейтін fn функциясын қабылдайды және кілттері fn нәтижелері, ал мәндері сол кілтке сәйкес элементтердің массивтері болатын объектіні қайтарады.

Мысал жүзеге асыру:

Array.prototype.groupBy = function(fn) {
  return this.reduce((acc, item) => {
    const key = fn(item);
    if (!acc[key]) {
      acc[key] = [];
    }
    acc[key].push(item);
    return acc;
  }, {});
};

Мысалдармен тексеру:

const array1 = [
  { id: 1 },
  { id: 1 },
  { id: 2 }
];
const fn = (item) => item.id;
console.log(array1.groupBy(fn));
// {
//  1: [{ id: 1 }, { id: 1 }],
//  2: [{ id: 2 }]
// }

const array2 = [1, 2, 3];
console.log(array2.groupBy(String));
// {
//  "1": [1],
//  "2": [2],
//  "3": [3]
// }

const array3 = [1.3, 0.5, 1.4];
console.log(array3.groupBy(Math.round));
// {
//  3: [1.3],
//  1: [0.5, 1.4]
// }

Бұл әдіс деректерді кез келген критерий бойынша топтастыру үшін ыңғайлы.