Sobes.tech
Middle

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

sobes.tech AI

Ҷавоб аз 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 есть, но пользователя нет в списке — выводим "-".
  • Выводим карточки команд с перечислением участников.