Найти среднее значение каждого массива в массиве - PullRequest
1 голос
/ 30 октября 2019

Я пытаюсь написать map / reduce, чтобы получить среднее значение каждого массива в массиве.

Например.

[[1][2,3][4,5,6,7]] => [1, 2.5, 5.5] 

Прямо сейчас это мой код, результатом которого является массив массивов:

result.map(array => {
  return array.reduce((a, b) => (a + b)) / array.length;
})

const result = [
  [1],
  [2, 3],
  [4, 5, 6, 7]
]

console.log(result.map(array => {
  return array.reduce((a, b) => (a + b)) / array.length;
}))

Любая помощь для получения желаемого результата очень ценится. В моем нынешнем виде вывод сводится к массиву NaN вместо средних.

Ответы [ 2 ]

4 голосов
/ 30 октября 2019

Вам необходим закрывающий парентез.

Используя Array#reduce с массивами с неизвестной длиной, вам нужно принять начальное значение, которое в данном случае равно нулю. результат.

var result = [[1], [2, 3], [4, 5, 6, 7]],
    avg = result.map(array => array.reduce((a, b) => a + b, 0) / array.length);
    //                                                    ^^^                ^
    //                                                    optional           required

console.log(avg);
1 голос
/ 30 октября 2019

Вы должны предоставить второй аргумент функции Reduce, начальное значение a. Итак:

result.map(array => {
  return array.reduce((a, b) => a + b, 0) / array.length;
});

Вы также можете убедиться, что array.length > 0, прежде чем делить на него

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...