как вывести случайные значения из массива, содержащегося в объекте - PullRequest
0 голосов
/ 03 ноября 2018
//how to output random values from within an array contained in an object?

var dog = {
        name: "Fluffy",
        leash: [true, false],

        randomizer: function() {
            this.leash[Math.floor(Math.random() * this.leash.length)];
            return this.leash;
            },

        call: function() {
            alert("Honey, " + this.name + " needs to pee…");
        },

        response: function() {
            alert("Ok, i got it, dear…");
            if (this.leash = false) {
                alert("You've got to put his leash on first");
            } else alert("Enjoy your walk…");
        },

    };
dog.randomizer();
dog.call();
dog.response();

1 Ответ

0 голосов
/ 03 ноября 2018

Предполагая, что вы ожидаете получать оповещение или другое на основании условия, когда вы звоните dog.response(), но вы всегда получаете одно и то же оповещение.

Вы можете решить проблему двумя способами

Обновление объекта

  • В randomizer установите значение случайного значения в свойстве и верните то же свойство.
  • В response проверьте значение и отобразите предупреждение.

var dog = {
        name: "Fluffy",
        leash: [true, false],

        randomizer: function() {
            this.leashed = this.leash[Math.floor(Math.random() * this.leash.length)];
            return this.leashed;
            },

        call: function() {
            alert("Honey, " + this.name + " needs to pee…");
        },

        response: function() {
            alert("Ok, i got it, dear…");
            if (!this.leashed) {
                alert("You've got to put his leash on first");
            } else alert("Enjoy your walk…");
        },

    };
dog.randomizer();
dog.call();
dog.response();

Получить значение и передать его

  • В randomizer, получить случайное значение, вернуть его.
  • В response передать случайное значение, проверить значение и показать предупреждение.

var dog = {
        name: "Fluffy",
        leash: [true, false],

        randomizer: function() {
            return this.leash[Math.floor(Math.random() * this.leash.length)];
            },

        call: function() {
            alert("Honey, " + this.name + " needs to pee…");
        },

        response: function(leashed) {
            alert("Ok, i got it, dear…");
            if (leashed) {
                alert("You've got to put his leash on first");
            } else alert("Enjoy your walk…");
        },

    };
let leash = dog.randomizer();
dog.call();
dog.response(leash);

Обратите внимание, в исходном коде также были ошибки

  • В randomizer нет LHS для this.leash[Math.floor(Math.random() * this.leash.length)]
  • В randomizer, this.leash возвращает массив в сравнении с ожидаемым случайным значением
  • В response, this.leash = false является назначением, а не сравнением. Для сравнения вам нужно будет использовать == или ===
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...