Лучший способ вернуть 4 подсказки, каждая с разными значениями баллов, из 4 категорий - PullRequest
0 голосов
/ 19 мая 2019

Я пытаюсь сделать игру типа «Jeopardy» с некоторыми друзьями, и из примера набора данных снизу (ради краткости я включил только базовую структуру; но значение data.clues.categoryId продолжается с 10 -1), мне нужно выяснить, как вернуть четыре подсказки, каждая из которых имеет значение возрастающей точки от 100-400 (увеличено на 100), из 4 категорий, выбранных случайным образом из набора из 10 категорий. Я уже написал метод выбора 4-х случайных категорий, теперь мне просто нужно написать метод, чтобы получить подсказки.

Ниже приведен код, который я написал; но он возвращает только 4 случайных вопроса из каждой категории, игнорируя значение балла. Я бы хотел бы вернуть четыре случайные подсказки из каждой категории, по одному от каждого значения точки (100, 200, 300, 400);

образец набора данных:

const data = {
  categories: {
    'unitedStatesHistory': 1,
    'lifeSciences': 2,
    'publicHealth': 3,
    'educationJargon': 4,
    'nameThatBoardGame': 5,
    'americanLiterature': 6,
    'biographies': 7,
    'americanCities': 8,
    'food': 9,
    'cableTV': 10
  },
  clues: [
    {
      question: "Scorecard Report\" & \"Peter Jacobsen Plugged In\" are seen on the sports channel devoted to this",
      pointValue: 100,
      answer: "golf",
      categoryId: 10
    },
    {
      question: "One of the most popular shows on the Food Network is \"The Essence of\" him",
      pointValue: 200,
      answer: "Emeril",
      categoryId: 10
    },
    {
      question: "The Eulogy\" is HBO's e-mail newsletter devoted to this series",
      pointValue: 300,
      answer: "Six Feet Under",
      categoryId: 10
    },
    {
      question: "(Hi, I'm Billy Ray Cyrus.)  In 2001 I began practicing medicine in the Big Apple on this Pax TV drama",
      pointValue: 400,
      answer: "Doc",
      categoryId: 10
    },
    {
      question: "What Sonya Fitzpatrick is, or the Animal Planet series on which she communicates with animals telepathically",
      pointValue: 400,
      answer: "The Pet Psychic",
      categoryId: 10
    }

мой код до сих пор:

function retrunCurrentCategoryClues(randomCategories) {
  return randomCategories.map(category => {
    const usableClues = data.clues.reduce((allClues, clue) => {
      if (clue.categoryId === category) {
        allClues.push(clue);
      }
      return allClues;
    }, []);
    while (usableClues.length > 4) {
      usableClues.splice(Math.round(Math.random() * usableClues.length), 1);
    }
    return usableClues;
  });
}

retrunCurrentCategoryClues([10, 8, 3, 4]);

Результаты ожидаемые, ошибок нет, я просто не могу понять, как вернуть подсказки, основанные на значении точки. Помогите! :)

...