03.05.2022, 18:34
|
Интересующийся
|
|
Регистрация: 20.04.2022
Сообщений: 10
|
|
Ещё 1 задачка
Тебе нужно показать юзерам кто из их друзей онлайн и готов к общению! Создай функцию whoIsOnline, которая принимает массив объектов friends и определяет кто из них online, offline или away. Если у юзера стоит статус online, но его не было в сети более 10 минут (lastActivity > 10), то можно считать, что его статус отныне away.
Пример входящих данных:
[{
username: 'Alice',
status: 'online',
lastActivity: 10
}, {
username: 'Lucy',
status: 'offline',
lastActivity: 22
}, {
username: 'Bob',
status: 'online',
lastActivity: 104
}]
Результат функции whoIsOnline:
{
online: ['Alice'],
offline: ['Lucy'],
away: ['Bob']
}
Если на сайте нет активных юзеров, то результат должен выглядеть так:
{
offline: ['Lucy'],
away: ['Bob']
}
Если ваших друзей совсем нет в чате, то в функцию прийдет пустой массив []. В таком случае нужно вернуть пустой объект {}
Вот что я написал:
function whoIsOnline(friends) {
const users = [
{
username: 'David',
status: 'online',
lastActivity: 10,
}, {
username: 'Lucy',
status: 'offline',
lastActivity: 22,
}, {
username: 'Bob',
status: 'online',
lastActivity: 104,
}];
let usersOnlineNames = '';
for (const item of massivOnlines) {
usersOnlineNames += item.username + ', ';
}
}
|
|
03.05.2022, 20:25
|
|
Профессор
|
|
Регистрация: 03.02.2020
Сообщений: 2,750
|
|
Вы думаете, что форум, что бы изучающим js задачки решать?
Направить можно, но давать готовое решение...
Какой тогда смысл в изучении?
Что такое massivOnlines? Где он описан?
Зачем const users = внутри функции? Где он используется?
whoIsOnline(friends) А как используется параметр friends?
Попробуйте сами написать условие, что бы определить, что юзверь online
|
|
03.05.2022, 20:36
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,127
|
|
Mr_Po,
const users = [{
username: 'David',
status: 'online',
lastActivity: 10,
}, {
username: 'Lucy',
status: 'offline',
lastActivity: 22,
}, {
username: 'Bob',
status: 'online',
lastActivity: 104,
}];
function whoIsOnline(friends) {
let usersOnlineNames = {};
for (let {
username,
status,
lastActivity
} of friends) {
if (status == 'online' && lastActivity > 10) status = 'away';
(usersOnlineNames[status] ??= []).push(username);
}
return usersOnlineNames
}
console.log(whoIsOnline(users))
Последний раз редактировалось рони, 04.05.2022 в 19:08.
|
|
03.05.2022, 20:38
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,127
|
|
voraa,
ты прав)))
|
|
03.05.2022, 20:46
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,127
|
|
voraa,
как на твой взгляд лучше?
так
(usersOnlineNames[status] = usersOnlineNames[status] ? ? []).push(username);
или так
if(status in usersOnlineNames)usersOnlineNames[status].push(username);
else usersOnlineNames[status] = [username];
|
|
03.05.2022, 22:30
|
Интересующийся
|
|
Регистрация: 20.04.2022
Сообщений: 10
|
|
ну я пробую сам решать, и свои идеи по решению пишу, а здесь на форуме я просто хочу получить помощь с решением, и подсказки что я делаю не так, если бы я не решал сам, я бы каждую задачу сюда постил, а так обращаюсь лишь с теми которые не до конца понимаю, если вас это бесит то приношу извинения, обращаться буду только по существенным проблемам
|
|
04.05.2022, 07:25
|
|
Профессор
|
|
Регистрация: 03.02.2020
Сообщений: 2,750
|
|
Сообщение от рони
|
voraa,
как на твой взгляд лучше?
|
Я не любитель всегда пихать все в одно выражение
Я бы сделал так
usersOnlineNames[status] ??= [];
usersOnlineNames[status].push(username);
|
|
04.05.2022, 07:30
|
|
Профессор
|
|
Регистрация: 03.02.2020
Сообщений: 2,750
|
|
Сообщение от Mr_Po
|
если вас это бесит то приношу извинения, обращаться буду только по существенным проблемам
|
Дело не в том, что бесит. Просто писать готовое решение - толку мало для изучающего.
Я задавал вопросы, на которые вы должны были ответить для себя.
Каждая строка в программе имеет какой то смысл.
Вот и думайте, попытайтесь объяснить самому себе: Этот оператор делает то-то... Эту строку я написал, для того что бы....
|
|
04.05.2022, 07:40
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,127
|
|
Сообщение от voraa
|
Я бы сделал так
|
|
|
04.05.2022, 07:49
|
|
Профессор
|
|
Регистрация: 03.02.2020
Сообщений: 2,750
|
|
Сообщение от рони
|
Сообщение от voraa
Я бы сделал так
|
Я просто стараюсь писать понятнее для себя. Что бы через полгода, год самому быстрее понять, что я хотел тут изобразить. Как мне понятнее, так и пишу. На разбор длинных сложных выражений уйдет больше времени.
|
|
|
|