• Почему выходит undefined?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    1. randNum содержит число.
    2. questFunc() возвращает строку с текстом вопроса.
    3. people[`${questFunc()}`] это, например, people["Это девушка?"] – будет undefined.
      Массив people не имеет строкового ключа. В нём два элемента с индексами 0 и 1.

    Я бы предложил не дублировать текст вопросов, а работать с их индексами. Так лаконичнее:
    spoiler
    const questions = [
      'Это самец?',
      'Это девушка?',
      'Носит очки?',
      'Занимается спортом?',
      'У этого человека смуглая кожа?',
    ];
    const people = [
      { name: 'Егор', profile: [1, 0, 1, 1, 1] },
      { name: 'Залина', profile: [0, 1, 1, 1, 0] },
    ];
    
    const questionElement = document.querySelector('.question');
    
    let questionIndex; // индекс текущего вопроса
    function askQustion() {
      questionIndex = Math.floor(Math.random() * questions.length);
      questionElement.innerHTML = questions[questionIndex];
      return questions[questionIndex];
    }
    
    askQustion();
    
    // TODO: принять ответ пользователя (true/false)
    const answer = true; // допустим, ответил "да"
    
    const candidates = people
      .filter(({ profile }) => !!profile[questionIndex] === answer)
      .map(({ name }) => name)
      .join(', ');
    
    console.log('Кандидаты:', candidates);
    Ответ написан
    Комментировать