Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Функция getArrayParams(...arr) которая будет возвращать min/max/среднее

Vasya Ученик (174), открыт 4 дня назад
1) функция, которая принимает на ввод массив 2) переменные min, max, sum 3) Пройдите по массиву циклом for: если элемент больше предыдущего макс, то макс = элементу;
если элемент меньше предыдущего мин, то мин = элементу;
добавляем элемент к сумме sum для последующего вычисления среднего. 4) Для передачи всех аргументов используйте spread-оператор, а для суммирования элементов — метод reduce 5) функция должна возвращать объект вида {max:..., min: ..., avg:...}. Среднее надо округлить до двух знаков после запятой( toFixed ). Нужно вернуть число (number), необходимо дополнительное преобразование значения к числу.
 function getArrayParams(arr) { 
let min, max, sum, avg;
min = Infinity;
max = -Infinity;
sum = 0;
for (let i = 0; i < arr.length; i++) {
if (arr[i] > max) {
max = arr[i];
} else if (arr[i] < min) {
min = arr[i];
} sum += arr[i];
}
avg = sum / arr.length;
return { min: min, max: max, avg: avg };
}
3 ответа
Pomogay Мудрец (19070) 4 дня назад
Вот исправленная версия вашей функции с учетом требований:

```javascript
function getArrayParams(...arr) {
let min = Infinity, max = -Infinity, sum = 0;

arr.forEach(el => {
if (el > max) max = el;
if (el < min) min = el;
sum += el;
});

const avg = (sum / arr.length).toFixed(2); // Среднее, округленное до 2 знаков
return { min, max, avg: +avg }; // Преобразуем avg в число
}
```

### Описание:
1. **spread-оператор** используется для передачи всех аргументов как массива.
2. Пройдено по массиву с использованием метода **forEach**.
3. Для вычисления среднего используется **toFixed(2)** для округления до двух знаков после запятой.
4. Возвращаем объект с полями `min`, `max` и `avg`, где `avg` преобразован в число с помощью унарного плюса `+`.
Diablo Мастер (1337) 4 дня назад
function getArrayParams(arr) {
if (arr.length === 0) {
return { min: undefined, max: undefined, avg: undefined };
}

let min = arr[0];
let max = arr[0];
let sum = arr.reduce((acc, curr) => acc + curr, 0);

for (let i = 1; i < arr.length; i++) {
if (arr[i] > max) {
max = arr[i];
}
if (arr[i] < min) {
min = arr[i];
}
}

let avg = Number((sum / arr.length).toFixed(2));

return { min: min, max: max, avg: avg };
}
Андрей Высший разум (472484) 4 дня назад
Задание, мягко говоря, странное. Пункт 4 противоречит пунктам 1 и 3. И если реализовывать их одновременно, получим бред сивой кобылы.

В твоём коде ошибочно тело цикла:
 if (arr[i] > max) { max = arr[i]; } // max ищется независимо от min
if (arr[i] < min) { min = arr[i]; } // min ищется независимо от max
sum += arr[i];
И вычисление avg не соответствует условию задачи:
 avg = +(sum / arr.length).toFixed(2); 
Иван СигаевИскусственный Интеллект (155516) 4 дня назад
Строго говоря его вариант тоже будет работать, поскольку если элемент больше максимального, то он точно не будет меньше минимального ( не попадет во вторую ветку, а сумма и у него считается независимо
Андрей Высший разум (472484) Иван Сигаев, Массив из одного элемента. Или массив [1, 2, 3]. В качестве минимума его код вернёт Infinity, т.к. else if ни разу не выполнится.
Похожие вопросы