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

Проблема с объектом

AMD EPYC Ученик (60), на голосовании 1 год назад
Создал метод для объекта, возвращающий максимальное значение его свойства (число). В консоль вывело NaN. Почему так произошло?
Голосование за лучший ответ
Яков Гото Искусственный Интеллект (320911) 1 год назад
Забыл оператор spread - поставь три точки перед obj (...obj)... потому что иначе - это массив, а не набор чисел. А так как Math.max() - математическая функция, автоматически преобразует массив в числовой тип, что и выдает NaN... тут самое важное, чтобы в переменной obj не было ничего, кроме чисел.
AMD EPYCУченик (60) 1 год назад
Не помогло...
Яков Гото Искусственный Интеллект (320911) Проблема в том, что функция тоже попадает в массив... и математический метод не может преобразовать ее в число после распаковки массива. Чтобы все сработало, нужно дополнительно создать фильтрацию, которая пересоберет массив, исключая все, что является "NaN".
 max () { 
   let obj = Object.values(this); 
   let filter = obj.filter(e => !isNaN(e)); 
   let max = Math.max(...filter); 
   return max 
}   
Саня Семенов Оракул (60497) 1 год назад
надо this - с ним все работает
Похожие вопросы