2d массив - группировать по первому элементу и вычислять среднее значение соответствующего числаJavascript

Форум по Javascript
Ответить
Anonymous
 2d массив - группировать по первому элементу и вычислять среднее значение соответствующего числа

Сообщение Anonymous »

У меня есть двухмерный массив, содержащий список сериалов с названием, рейтингом и временем просмотра. Например:

Код: Выделить всё

let seriesList = [["Squid Game", 3.5, "4 days"], ["Squid Game", 2.5, "3 days"], ["Buffy the Vampire Slayer", 5, "32 days"], ["The Fosters", 3, "5 days"]];
Серия может появляться несколько раз с разным рейтингом. Я хотел бы вычислить средний рейтинг для каждой серии (и получить еще один двухмерный массив, в котором каждая серия появляется только один раз).
До сих пор я использовал функцию уменьшения() для массива, чтобы подсчитайте сумму всех оценок, но не могу понять, как получить количество оценок, чтобы разделить на него.

Код: Выделить всё

let seriesList = [["Squid Game", 3.5, "4 days"], ["Squid Game", 2.5, "3 days"], ["Buffy the Vampire Slayer", 5, "32 days"], ["The Fosters", 3, "5 days"]]; // example of values in my array, but it's actually much longer and it will change with each new series i watch

let seriesListAverage = Object.values(
seriesList.reduce((accumulator, currentValue) => {

if (accumulator[currentValue[0]]) {
accumulator[currentValue[0]][1] += currentValue[1]; // do the sum of all ratings
}
else {
accumulator[currentValue[0]] = currentValue;
}
return accumulator;
}, {})
);

console.log(seriesListAverage); // Result: [["Squid Game", 6, "4 days"], ["Buffy the Vampire Slayer", 5, "32 days"], ["The Fosters", 3, "5 days"]]

// Expected result: [["Squid Game", 3, "4 days"], ["Buffy the Vampire Slayer", 5, "32 days"], ["The Fosters", 3, "5 days"]]


(Если это имеет значение, сценарий написан на Apps Script, я получаю значения для seriesList из листа моего файла Sheets, и я печатаю результат на другой лист. Вот почему мне нужен 2D-массив.)

Подробнее здесь: https://stackoverflow.com/questions/793 ... ing-number
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Javascript»