<div id='passarr'>1572 4528 3564 8921 4521</div>
Мне нужно создать новое случайное целое число (4 цифры), уникальное в отношении вышеуказанного содержания.
js
var content = $('#passarr').text();
var passarr = content.split(' ');
var pass = Math.floor(Math.random() * 9000) + 1000;
var i = 0;
while (i == 0) {
if (jQuery.inArray(pass, passarr) > -1) {
var pass = Math.floor(Math.random() * 9000) + 1000;
i = 1;
}
}
Кажется, это работает, но не уверен, что это правильный и кратчайший путь.
любое предложение?
0
qadenza
28 Июл 2017 в 20:31
1 ответ
Лучший ответ
Ваш код - это то, что вам нужно. Однако вы можете устранить несколько более мелких ошибок (ненужный i и нерабочий код в <0,00001%):
var content = $('#passarr').text();
var passarr = content.split(' ');
do {
var pass = Math.floor(Math.random() * 9000) + 1000;
} while (jQuery.inArray(pass, passarr) > -1);
console.log(pass);
3
Jonas Wilms
28 Июл 2017 в 20:46
Это именно тот алгоритм, который им нужен. Мое единственное предложение - переместить объявление
– var pass
за пределы цикла, чтобы тот, кто не знает о подъеме, не был сбит с толку областью действия pass
.
4castle
28 Июл 2017 в 20:50
Это на самом деле пункт, чтобы не менять его. Они удивятся, что это работает, а потом будут умнее;)
– Jonas Wilms
28 Июл 2017 в 20:51
Отлично, позже я увидел, что мой код на самом деле не работает. Это работает. большое спасибо.
– qadenza
28 Июл 2017 в 20:53
Похожие вопросы
Новые вопросы
javascript
По вопросам программирования на ECMAScript (JavaScript / JS) и его различных диалектах / реализациях (кроме ActionScript). Включите все соответствующие теги в свой вопрос; например, [node.js], [jquery], [json] и т. д.
#passarr
результат?if
на самом деле должно быть логическим выражением в оператореwhile
. Вам не нуженi
.pass
while (jQuery.inArray(pass, passarr) === -1)) { ... }