Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Проверка наличия в обьекте свойства, прочитанного из prompt (https://javascript.ru/forum/misc/69655-proverka-nalichiya-v-obekte-svojjstva-prochitannogo-iz-prompt.html)

j0hnik 10.07.2017 02:01

что вы хотите увидеть при таких значениях массива?
[1, 2, 3, 'a', 'b', 'c', 'Infinity', -Infinity]

Tanya51 10.07.2017 06:51

Спасибо)

Tanya51 10.07.2017 10:19

(el=+el?+el:0)
А можете мне обьяснить это выражение, пожалуйста.
Я правильно понимаю,что здесь используется условный оператор?

Tanya51 10.07.2017 11:04

Цитата:

Сообщение от j0hnik (Сообщение 458057)
EmperioAf. можно еще быстрей и через тернарный без функции
var arr = ['1', '2', '3', 'a', 'b', 'c', '4', '5', '6'],
sum = arr.reduce((sum, el) => sum+(el=+el?+el:0));
alert(sum);

а что,если у меня все элементы строчное?
Этот пример тогда не работает.
Как можно это решить?

EmperioAf 10.07.2017 11:17

Reduce принимает 2 аргумента, первый - callback ф-ия, второй initialValue.
Ну и если выбрали унарный оператор, то логичнее выглядит так.
arr.reduce((sum, el) => sum + (+el || 0), 0)

j0hnik 10.07.2017 13:47

Цитата:

Сообщение от Tanya51 (Сообщение 458079)
(el=+el?+el:0)
А можете мне обьяснить это выражение, пожалуйста.
Я правильно понимаю,что здесь используется условный оператор?

правильно, все что не число будет равно нулю.
пример:
+'5' -приведение строки к числу. // 5
+'с' -к числу не приведется . // NaN

правильнее наверное будет так:

var arr = ['1', '2', true, 's'],
sum = arr.reduce((sum, el) => +sum+(el=el!==true?+el?+el:0:0));
alert(sum);


потому что унарный из true делает единицу

Tanya51 11.07.2017 13:24

Помогите пожалуйста еще с вот этой задачкой
https://javascript.ru/forum/showthre...168#post458168


Часовой пояс GMT +3, время: 02:26.