2014-08-29 1 views
0

Я пишу систему комментариев, и я хочу иметь возможность сортировать по большинству upvotes, которые я делаю в php-файле, а затем повторять данные на JavaScript.Почему JSON.stringify отображается в другом порядке, чем итерация через массив?

Когда я вхожу это:

console.log(JSON.stringify(commentHopper)); 

комментарии в правильном порядке с upvotes как следующие: 900, 500, 300, 0, 0

Но когда я итерацию по массиву как это:

for (var n = 0; n < commentHopper.length; n++) { 
      console.log(commentHopper[n]); 
} 

результаты в следующем порядке: 0, 300, 900, 0, 500

+5

Вы уверены, что 'commentHopper' представляет собой массив? Это может быть объект типа «массив». Как вы его создаете? K –

+4

Покажите нам свою структуру данных. – deceze

+4

То, что вы называете массивом в php, не всегда является массивом в javascript. Объекты не имеют гарантированного порядка. –

ответ

0

Вероятно, вы имеете дело с объектом, а не с массивом.

console.log(typeof commentHopper) Попробуйте

Если вы хотите, чтобы пройти через объект «чтобы» вы можете использовать for/in заявление.

for(var key in commentHopper){ 
    console.log(commentHopper[key]); 
} 
+2

Просто FYI, 'typeof []' возвращает '" объект "'. Это не скажет вам, массив или нет. (См. Https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/typeof) Вам нужно проверить 'commentHopper.constructor'. –

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