Sobes.tech
Middle
22

Командалар тізімін көрсететін компонентті жүзеге асырыңыз. Командалар массиві (аты мен қатысушылардың user ID тізімі) және пайдаланушылардың бөлек массиві (ID мен атымен) беріледі. User ID бойынша командалар мен пайдаланушыларды сәйкестендіріп, қатысушыларды көрсететін карточкаларды шығарыңыз. Егер қатысушылар болмаса, 'қатысушылар жоқ' деп көрсетіңіз; егер user ID бар болса, бірақ пайдаланушы табылмаса, сызықша көрсетіңіз. User ID массив, сан, null немесе undefined болуы мүмкін.

Сұралған компаниялар
Агротехнические системы

AI-дан жауап

sobes.tech AI

Ниже пример реализации React-компонента, который принимает массив команд и пользователей, сопоставляет участников по ID и выводит карточки с участниками:

import React from 'react';

function TeamList({ teams, users }) {
  // Создаём словарь пользователей по ID для быстрого поиска
  const userMap = React.useMemo(() => {
    const map = new Map();
    users.forEach(user => {
      map.set(user.id, user.name);
    });
    return map;
  }, [users]);

  // Функция для получения списка имён участников команды
  const getParticipantNames = (userIds) => {
    if (!userIds) return ['нет участников'];

    // Приводим userIds к массиву
    let ids = [];
    if (Array.isArray(userIds)) {
      ids = userIds;
    } else if (typeof userIds === 'number') {
      ids = [userIds];
    } else {
      return ['нет участников'];
    }

    if (ids.length === 0) return ['нет участников'];

    return ids.map(id => {
      if (id === null || id === undefined) return '-';
      return userMap.has(id) ? userMap.get(id) : '-';
    });
  };

  return (
    <div>
      {teams.map(team => (
        <div key={team.name} style={{border: '1px solid #ccc', margin: '10px', padding: '10px'}}>
          <h3>{team.name}</h3>
          <ul>
            {getParticipantNames(team.userIds).map((name, idx) => (
              <li key={idx}>{name}</li>
            ))}
          </ul>
        </div>
      ))}
    </div>
  );
}

export default TeamList;

Объяснение:

  • Создаём карту пользователей для быстрого поиска имени по ID.
  • Обрабатываем userIds, учитывая, что это может быть массив, число, null или undefined.
  • Если участников нет, выводим "нет участников".
  • Если ID есть, но пользователя нет в списке — выводим "-".
  • Выводим карточки команд с перечислением участников.