Не допускайте более 4 одинаковых значений в стеке JS - PullRequest
0 голосов
/ 15 апреля 2011

Итак, у меня есть стек JavaScript, построенный после этой функции:

function Stack()    //Creating Stack Object
    {
    // Create an empty array of cards.
    this.cards = new Array();  //cards array inside stack object
    this.push  = pushdata;      //Call pushdata function on push operation
    this.pop   = popdata;        //Call popdata function on pop operation
    this.printStack = showStackData; //Call showStackData function on printstack operation

    this.populate = function populate() {

            this.push(rand());
            this.push(rand());
            this.push(rand());
            this.push(rand());
        }
    }

(где rand () - это просто функция, генерирующая случайное число от 0 до 10 - надеюсь, синтаксисхорошо, потому что мне пришлось удалить много закомментированных функций, чтобы сделать его подходящим для этого поста).

Так что я хочу добиться, чтобы не допустить, чтобы 4 одинаковых значения в этом стеке / массиве.

Я понял, что могу проверить каждое число, сгенерированное rand (), прежде чем оно будет помещено в стек, добавить 1 в переменную счетчика и добавить условие, чтобы не добавлять это число, когда его счетчик уже равен четырем.,Но это будет означать новую переменную для каждого возможного числа, которое может быть помещено в стек, что кажется мне ненужным излишним, и я думаю, вы понимаете, что это не самое элегантное решение.

как бы вы подошли к этому?

Заранее большое спасибо!

1 Ответ

1 голос
/ 15 апреля 2011

Вместо

this.push(rand()); 

Проверьте, было ли значение уже в массиве четыре раза

var randNum = rand();
var count = 0;
for(var i = 0; i < this.length; i++){
  if(this[i] === randNum) count++;
}
if(count <= 4) this.push(randNum);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...