2016-04-21 7 views
0

У меня есть этот код, который im echoing data из jquery success.Два условия для цикла

for(i = 0;i < dat.id.length; i++){ 

      // im echoing data here 
    } 

и я хочу проверить для самого высокого значения в dat.voteup

подобное (это работает)

var maxvoteup = 0; 
    if (dat.voteup[i] - dat.votedown[i] ==maxvoteup) { 
        console.log(maxvoteup); 
     //i want fetch maxvoteup here 

    } 

Но я хочу сделать только один цикл не два. Как я могу сделать это?

EDIT:

var maxvoteup = 0; 
    for (i = 0;i < (dat.voteup-dat.votedown).length ;i++) { 
     if (dat.voteup[i] - dat.votedown[i]>maxvoteup) { 
      maxvoteup = dat.voteup[i] - dat.votedown[i]; 
        console.log(maxvoteup); 
     //i want fetch maxvoteup here 
     } 
    } 

EDIT2: это то, что им получать в моем ответе Jquery, но на самом деле мой макс голосование 10 не 8. 8 просто проголосовали до 8, но есть другие голосов, что составляет 10.

{"status":"success","message":[],"date_edited":[2016-04-21 21:31:25],"voteup":[],"votedown":[8],"id":[]} 
+0

вы просто используете оба условия внутри одного для цикла .store оба результата приводят к переменной или массиву. – JYoThI

+0

@Tushar извините за мой поздний ответ, может быть, я не был ясен, я редактировал свой вопрос. я имею в виду, что для цикла тоже нужно искать максимальное значение. как мне совместить это с первым для цикла –

ответ

1

Ваш код немного трудно читать, но если я правильно понимаю, что я считаю, все, что вам нужно сделать, это объединить и в одиночный цикл с maxvoteup, определенный снаружи.

var maxvoteup = 0; 
for(i = 0;i < dat.id.length; i++){ 
    // echo data... 

    // max upvote 
    if (dat.voteup[i] - dat.votedown[i] == maxvoteup) { 
     console.log(maxvoteup); 
    } 
} 

EDIT:

К сожалению, получение максимального значения из списка требует, чтобы вы итерации по списку, то есть, максимальное значение не может быть найдены в постоянная время. Я предлагаю вам сначала найти максимум, а затем продолжить цикл for.

Кроме того, если вы знаете, что ваш максимум список номеров, вы можете использовать apply JavaScript, чтобы сделать код немного очистителя:

var maxvoteup = Math.max.apply(Math, listOfMaxVotes); 

Смотрите здесь: How does the Math.max.apply() work?

EDIT2:

Если вы хотите постоянно отслеживать максимум, то все, что вам нужно сделать, это переместить переменную maxvoteup в за пределами ваших обработчиков ответов поэтому вы всегда можете отслеживать.

// global scope... 
var maxvoteup = 0; 

// your jquery response handler 
var onSuccessData = function(data) { 
    // get the highest possible max from the `voteup` and `votedown` lists 
    var responseMax = Math.max.apply(Math, data.voteup.concat(data.votedown)); 

    // check if it's greater than our global maxvoteup 
    if (responseMax > maxvoteup) { 
    // if it is, then update our global `maxvoteup` to the new value 
    maxvoteup = responseMax; 
    } 

    // continue with your other processing... 
}; 
+0

Спасибо за объяснение. Я обновил свой ответ. – smaili

+0

Можете ли вы изменить свой вопрос и дать пример того, как выглядят данные успеха jquery? Это очень поможет. – smaili

+0

Я редактировал мой вопрос, дорогой smaili. im получать только отредактированные значения не все значения –

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