JS - группировать, отображать и выравнивать массив объектов с массивами в них - PullRequest
0 голосов
/ 02 февраля 2020

Уважаемые,

Я действительно не могу добиться следующего результата:

{"2002": [1,2,3 ...]}, {"2003": [ 1,2,3,4 ...]}, ...

У меня есть следующие данные (короткий пример ниже):

{ "Year": "28-01-2020", "numbers": [10, 12, 20, 32, 35, 37] },
{ "Year": "03-10-2019", "numbers": [1, 6, 16, 19, 20, 30] },
{ "Year": "11-01-2018", "numbers": [14, 21, 25, 27, 30, 39] },
{ "Year": "11-08-2015", "numbers": [8, 16, 17, 18, 38, 46] },

Мне удалось использовать loda sh _ .groupBy для достижения следующего среднего результата:

[{…}]
0:
2000: Array(4)
0:
Year: "2000"
numbers: (7) [empty, 6, 25, 27, 37, 48, 49]
Year: "2000"
numbers: (7) [empty, 7, 12, 19, 30, 45, 49]
2: {Year: "2000", numbers: Array(7)}
2001: Array(104)
[0 … 99]
[100 … 103]
100: {Year: "2001", numbers: Array(7)}
101: {Year: "2001", numbers: Array(7)}
[0 … 99]
0: {Year: "2002", numbers: Array(7)}
1: {Year: "2002", numbers: Array(7)}

..

но я хотел бы иметь один объект в год со всеми числами, которые появились в подмассивах в этом году

Не могли бы вы помочь мне, я устал от карты ES6 и для циклов, но не дать мне правильный результат

Заранее спасибо

1 Ответ

0 голосов
/ 02 февраля 2020

Это сработало для меня:

const slicedYear = results.map(elem => (elem = { Year: elem.Year.slice(elem.Year.length - 4), numbers: elem.numbers }));
const groupedResults = _.groupBy(slicedYear, 'Year');

for (let key in groupedResults) {
    const selectedNumbers = { [key]: [groupedResults[key].map(elem => elem.numbers)].flat(2) };
}
...