Пара вопросов по javascript

ОТВЕТИТЬ НОВАЯ ТЕМА
SturgeonRU 9 июл 2020 в 12:23
Ярила  •  На сайте 10 лет
Сообщений: 3 372
4
Добрый день всем!
Прошу помочь разобраться с некоторыми вопросами по javascript.
Есть некий массив с объектами.

Код
var birthdayList = [{
               dayOfBirth: 9,
               monthOfBirth: 7,
               name: "Иванов",
           }, {
               dayOfBirth: 12,
               monthOfBirth: 7,
               name: "Петров",
           }, {
               dayOfBirth: 9,
               monthOfBirth: 7,
               name: "Сидоров",
           },


Это дни рождения. Мне надо найти дни рождения людей, которые приходятся на определенную дату и вывести имена этих людей. Методом filter я могу создать новый массив, который будет содержать объекты с нужной датой. Но это будут именно целые объекты, а мне надо, чтобы в массиве были только имена. Т.е. в результатом работы скрипта должен быть массив ["Иванов", "Сидоров"].
Не могу сообразить как это сделать.


Предупреждая вопросы о том, сколько мне лет, сразу говорю, что лет мне много и это не школьные домашние задания :) Программирую в рамках освоения ОпенХаб. Про специализированные форумы знаю, но они для специалистов. И, думаю, что там с моими вопросами меня пошлют.

Это сообщение отредактировал SturgeonRU - 9 июл 2020 в 12:24
Yap 25.07.2026 - 12:10
Продам слона  •  На сайте 21 год
Все комментарии:
OtecFeofan 9 июл 2020 в 12:27
Шутник  •  На сайте 12 лет
3
let result = birthdayList.filter(i => i.dayOfBirth==x && i.monthOfBirth == y).map(i => i.name)
ss1971 9 июл 2020 в 12:50
Ярила  •  На сайте 10 лет
0
а почему не использовать обычный for?
хотя конечно в случае интерпретатора с неизвестной по попределению реализацией может быть реализован filter в кодах и он быстрее. но что в каком браузере будет если у одного их обьектов не окажется свойства dayofbirth или name предсказать сложно.

имхо синтаксического сахара стало капец как много. и начинающие вместо того чтобы учить серьёзные и нужные вещи тратят огромное количество времени чтобы изучить например 10 разных способов перебрать все обьекты какой нибудь коллекции.
OtecFeofan 9 июл 2020 в 13:02
Шутник  •  На сайте 12 лет
-5
Цитата (ss1971 @ 9.07.2020 - 12:50)
а почему не использовать обычный for?
хотя конечно в случае интерпретатора с неизвестной по попределению реализацией может быть реализован filter в кодах и он быстрее. но что в каком браузере будет если у одного их обьектов не окажется свойства dayofbirth или name предсказать сложно.

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

дядя, пиши код на перфокартах, вместо япа тлеграфируй на деревню, а жопу соломой вытирай вместо 3х слойной бумаги
SturgeonRU автор 9 июл 2020 в 13:03
Ярила  •  На сайте 10 лет
1
OtecFeofan
Спасибо! Стрелочные функции мне попадались, но мне показалось, что это очень запутанно и сложно. Хотя Ваш пример выглядит очень коротко и просто. Видимо, надо все-таки разобраться со стрелочными функциями.

ss1971, что-то типа for я и думал применить, но не нашел готовых решений. А самостоятельно написать более-менее сложный код я не умею.
ss1971 9 июл 2020 в 14:06
Ярила  •  На сайте 10 лет
-1
Цитата (SturgeonRU @ 9.07.2020 - 13:03)
OtecFeofan
Спасибо! Стрелочные функции мне попадались, но мне показалось, что это очень запутанно и сложно. Хотя Ваш пример выглядит очень коротко и просто. Видимо, надо все-таки разобраться со стрелочными функциями.

ss1971, что-то типа for я и думал применить, но не нашел готовых решений. А самостоятельно написать более-менее сложный код я не умею.

Вы что совсем уже?... Вам в школу надо.

let res=[];
for(var i=0;i<arr.length;i++)
{
if(arr[i].name===undefined) continue;
if(arr[i].birthday===undefined) continue;
if(arr[i].birthday=="01012000") res.push(arr[i].name);
}


честно - изучите базу. вот без обид Вы понимаете чтотакое например конструктор.

PS насколько помню кстати "стрелочные функции" официально это лямбда выражения

Это сообщение отредактировал ss1971 - 9 июл 2020 в 14:18
SturgeonRU автор 9 июл 2020 в 14:57
Ярила  •  На сайте 10 лет
0
ss1971, в школу мне поздно.

В отрочестве я изучал ассемблер и тусовался на известном крякерском форуме. При желании могу и сейчас патч или кейген забацать почти для чего угодно.
А вот web-программирование мне дается с трудом. AngularJS это вообще что-то для инопланетян.

Это сообщение отредактировал SturgeonRU - 9 июл 2020 в 15:04
Crowner 9 июл 2020 в 17:24
Путешественник  •  На сайте 17 лет
0
Цитата (SturgeonRU @ 9.07.2020 - 18:57)
ss1971, в школу мне поздно.

В отрочестве я изучал ассемблер и тусовался на известном крякерском форуме. При желании могу и сейчас патч или кейген забацать почти для чего угодно.
А вот web-программирование мне дается с трудом. AngularJS это вообще что-то для инопланетян.

ну кстати да )) я лет 20 назад на асме кодил и до сих пор могу на асме написать что-нибудь, а JS изучал, опыты проводил, получалось, работало, как забросил, так выветрилось )) Хотя асм раньше, до того, как его понял, казался страшным и сложным.
ss1971 9 июл 2020 в 17:31
Ярила  •  На сайте 10 лет
2
Цитата (SturgeonRU @ 9.07.2020 - 14:57)
ss1971, в школу мне поздно.

В отрочестве я изучал ассемблер и тусовался на известном крякерском форуме. При желании могу и сейчас патч или кейген забацать почти для чего угодно.
А вот web-программирование мне дается с трудом. AngularJS это вообще что-то для инопланетян.

ну ангулар и квери тоже не знаю да и не программист я. но имхо чтобы изучать сиподобные языки надо начать с С++. джефф элджер первые главы не понмю уже надо третью читать или нет но понять желательно всё до буквы там немного совсем. и у него там ошибки толи переводчик нахуевертил то ли спецом чтобы осознание было предельным. а уж потом можно начинать понимать насколько же С# и java ни разу не С++ и насколько же ебанут JS и насколько странно там конструирование обьектов. у JS одно правило как у бойцовского клуба и оно заключается в словах "никаких правил" а эти ангулары и квери это попытка в бесконечном разнообразии построить стенки и двери и ограничить свою свободу самому своими руками для чего не понимаю такое чувство что они боятся собственных фантазий.

но
class
do/while/for
if/else
return
==<>
=
+-*/
это надо знать так чтобы после литра водки быть в состоянии вспомнить. это суть программирования. все эти делегаты и эвенты все встроенные коллеции и интерфейсы и ещё горы всяческих концепций современного программирования именно потому и называются синтаксическим сахаром что всех их можно написать используя эти базовые ключевые слова и указатели на переменные и функции. причем иногда ещё и короче и почти всегда понятнее.
SpecialK 9 июл 2020 в 17:37
Приколист  •  На сайте 14 лет
1
Цитата (OtecFeofan @ 9.07.2020 - 12:27)
let result = birthdayList.filter(i => i.dayOfBirth==x && i.monthOfBirth == y).map(i => i.name)

Я бы лучше одним редьюсом сделал. Зачем два раза проходить)
OtecFeofan 10 июл 2020 в 09:30
Шутник  •  На сайте 12 лет
0
Цитата (SpecialK @ 9.07.2020 - 17:37)
Цитата (OtecFeofan @ 9.07.2020 - 12:27)
let result = birthdayList.filter(i => i.dayOfBirth==x && i.monthOfBirth == y).map(i => i.name)

Я бы лучше одним редьюсом сделал. Зачем два раза проходить)

Да, годное предложение
Понравился пост? Ещё больше интересного в ЯП-Телеграм и ЯП-Max!
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии. Авторизуйтесь, пожалуйста, или зарегистрируйтесь, если не зарегистрированы.
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) Просмотры темы: 991
0 Пользователей:
ОТВЕТИТЬ НОВАЯ ТЕМА

 
 

Активные темы



Наверх