ВЫЗОВ CLUEDO: Использование функции внутри функции для получения случайного ключа объекта внутри массива - PullRequest
0 голосов
/ 17 февраля 2019

В настоящее время я делаю вызов Cluedo в javascript, где мне нужно сгенерировать случайного человека со случайным оружием, которое убило главного героя.У меня есть массив с различными объектами людей, массив с оружием и массив, в какой комнате он мог быть убит.

Мне нужно использовать несколько функций, чтобы закончить испытание.

Внутри функции: pickMistery, мне нужно получить случайное имя, фамилию, оружие и комнату.Я должен получить случайное значение из функции randomSelector.

Я пытался создать новый массив внутри случайного селектора, я пытался получить доступ к переменным из randomSelector в pickMistery, но закрытие конечно не позволитя делаю это.

var charactersArray = [{firstname: 'Jacob',lastName: "Green", age: 45, description: "He has a lot of connections", occupation: "Entrepreneur"}, {firstname: 'Will',lastName: "Ding", age: 45, description: "Cool guy", occupation: "Scientis"}]

const randomSelector = function(arr) {
    for (var i = 0; i < arr.length; i++) {
    return arr[Math.floor(Math.random() * arr.length)];
  }
};


const pickMistery = function(arr) {
  for (var i = 0; i < arr.length; i++) {
   var firstName = randomSelector(arr[i].firstName);
  }
  return firstName
};

console.log(pickMistery(charactersArray))

Чего я пытаюсь достичь:

  • извлечения firstName внутри этого массива.:

var charactersArray = [{firstname: 'Jacob', lastName: "Green", возраст: 45 лет, описание: "У него много связей", род занятий: "Entrepreneur"}, {firstname: 'Will', lastName: "Ding", возраст: 45, описание: "Крутой парень", род занятий: "Scientis"}]

Я хочу получить случайное имя из этого массива, поэтомубыть «Иаковом» или «Воля».

Надеюсь, я прояснил этот вопрос, это моя первая публикация в StackOverflow:)!

Это мои коды и поле для этого кода, кстати:

https://codesandbox.io/s/7j16l43jnj

1 Ответ

0 голосов
/ 17 февраля 2019

Вот как вы можете это сделать.

У вас есть некоторые проблемы.

  1. Возврат внутрь цикла не имеет смысла
  2. Вы передаете arr[i].firstname в качестве аргумента функции randomSelector, которая является строкой, а затем вы пытаетесь использовать символ, который вам не нужен.

var charactersArray = [{firstname: 'Jacob',lastName: "Green", age: 45, description: "He has a lot of connections", occupation: "Entrepreneur"}, {firstname: 'Will',lastName: "Ding", age: 45, description: "Cool guy", occupation: "Scientis"}]

const randomSelector = function(arr) {
    return arr[Math.floor(Math.random() * arr.length)];
};


const pickMistery = function(arr) {
  return randomSelector(arr).firstname
};

console.log(pickMistery(charactersArray))
...