итерация элементов

250
25 января 2018, 21:04

Имеются наброски кода, который должен анализировать каждый элемент из списка элементов и всякий раз выбирать любой другой, но не тот, который уже был выбран (использован).

    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), чего не происходит...подскажите, в чем может быть проблема? Как оптимизировать код?

Answer 1

a = b; это операция присваивания, в ссылку a кладётся b.

a == b это сравнение, результатом этого выражения является true или false.

В выражении if надо использовать сравнение а не присваивание.
if (uri = items[i]) - неверно (хотя конечно в каких-то ситуациях и так можно написать, но так писать не надо).

if (uri == items[i]) верно.

Кроме того что вы хотели получить в этом выражении, вообще не понятно

uri != items[i];

!= это тоже сравнение, в вашем случае оно ничего не делает.

Answer 2

Вариант итерации без повтора прошлого выбора...

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()) 
}

READ ALSO
Замыкание и утечка памяти в Javascript

Замыкание и утечка памяти в Javascript

Помогите разобраться с алгоритмом сборщика мусораНе могу найти статьи, в которых описывался бы подобный случай:

305
Как получить объект из data атрибута?

Как получить объект из data атрибута?

Почему когда вывожу первый раз consolelog();, атрибут возвращает строку, а не объект? А если установить через JS данный атрибут, то возвращает уже...

258
Безопасность куки

Безопасность куки

Объясните пожалуйста почему куки считают не безопасными? Я думаю что это вполне себе безопасная вещь, я просто хочу убедится в этомКуки по подсунутой...

254