2016-07-02 2 views
0
 console.log(previousCompetitors); 
     console.log(competitors); 
     if(data.isVisible) { 
      var moveIndexTo = []; 
      for(var q=0; q<competitors.length;q++) { 
       moveIndexTo.push(-1); 
      } 
      for(var i = 0; i<competitors.length; i++) { 
       for(var j = 0; j<previousCompetitors.length; j++) { 
        console.log(competitors[i].name); 
        console.log(previousCompetitors[j].name); 
        if(competitors[i].name === previousCompetitors[j].name) { 
         moveIndexTo[j]= i; 
         break; 
        } 
       } 
      } 
      console.log(moveIndexTo); 
     } 

Я медленно схожу с ума, пытаясь выяснить, что здесь происходит. У меня есть массив данных конкурентов, которые обновляются по порядку. Они оба являются массивами, и я хочу отслеживать изменения с предыдущего заказа.javascript loop string сравнение головная боль

Я передаю данные и вижу, что порядок данных был изменен, но каждый раз, когда массив moveIndexTo становится [0,1,2,3,4,5], подразумевая, что предыдущие конкуренты имеют равные заказ. Как их можно изменить, когда я консолью их в верхней части блока кода, когда я выполняю сравнение строк?

конкурентный и previousCompetitors принимают примерно то образуют

[{имя: 'name1'}, {имя: 'name2'}, {имя: 'name3'}, {имя: 'NAME4'}, {имя : 'name5'}, {name: 'name6'}]

с большим количеством движений в каждом объекте. Итак, если это было раньше, то конкуренты тогда были бы такими, как

[{name: 'name6'}, {name: 'name2'}, {name: 'name3'}, {name: 'name4'}, {name : 'name5'}, {имя: 'name1'}].

Обратите внимание на переключатель name1 и name6. Поэтому я ожидал бы, что moveIndexTo будет [5,1,2,3,4,0].

+0

Можете ли вы [редактировать] на ваш вопрос, чтобы показать вход образца и соответствующего требуемого выходного сигнала (то есть, пример содержимого 'competitors' и' previousCompetitors', и что должно быть после 'moveIndexTo'? – nnnnnn

+0

Данные довольно большие и вложенные. Но это просто массив объектов, у каждого объекта есть поле имени, а также многие другие. Мое намерение - использовать moveIndexTo для записи, где объект в позиции j в предыдущихCompetitors в настоящее время находится в конкурентах, сохраняя i в j-м индексе moveToIndex. –

+0

Я вставлял ваши образцы данных и код в скрипту, и результат был «[5,1,2,3,4,0]», как и ожидалось: https://jsfiddle.net/1jxmsewr/ – nnnnnn

ответ

1

Просто попробуйте это: moveIndexTo[i] = j; скрипку на: https://jsfiddle.net/c9mbbpjj/

+0

Зачем это помогло? – nnnnnn

+0

На самом деле то, что вы хотите, это изменения в контексте currentCompetitors, а не previousCompetitors. Поэтому движущиеся индексы должны быть как указано выше. – binariedMe

+0

За исключением того, что скрипка, которую я опубликовал за 15 минут до вашего ответа, показывает, что код OP дает желаемый результат, как есть: https://jsfiddle.net/1jxmsewr – nnnnnn

Смежные вопросы