Имеются наброски кода, который должен анализировать каждый элемент из списка элементов и всякий раз выбирать любой другой, но не тот, который уже был выбран (использован).
function() {
var items = ["John", "Mary", "Nick"];
var uri = items[0]
var itemslength = items.length;
for (var i = 0; i < itemslength; i++) {
if (uri = items[i]) {
uri != items[i];
}
}.
Когда я прогоняю код, захватывается всегда только третий элемент (Nick). Когда же функция задействована снова, элемент должен сменится на первый (John) или второй (Mary), но не на третий (Nick), чего не происходит...подскажите, в чем может быть проблема? Как оптимизировать код?
a = b; это операция присваивания, в ссылку a кладётся b.
a == b это сравнение, результатом этого выражения является true или false.
В выражении if надо использовать сравнение а не присваивание.
if (uri = items[i]) - неверно (хотя конечно в каких-то ситуациях и так можно написать, но так писать не надо).
if (uri == items[i]) верно.
Кроме того что вы хотели получить в этом выражении, вообще не понятно
uri != items[i];
!= это тоже сравнение, в вашем случае оно ничего не делает.
Вариант итерации без повтора прошлого выбора...
var items = ["John", "Mary", "Nick"];
function fn(arr) {
var temp = Math.floor(Math.random() * arr.length);
return function() {
var out = arr.slice();
out.splice(temp, 1);
temp = Math.floor(Math.random() * out.length);
out = out[temp];
temp = arr.indexOf(out)
return out
}
}
var x = fn(items);
for (var i = 0; i < 12; i++) {
console.log(x())
}
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости