Это будет очень простой вопрос для всех вас, javascript/jquery.Разница между for (i в массиве) и для (var i = 0; i <array.length; i ++)
Я программировал javascript за последние 2 года, и сегодня я столкнулся с какой-то странной проблемой.
Я выборки в JSONarray от моего C# Webmethod
и называя его jQuery.ajax()
Когда я
for (i in JSONRaw) {
Index = Index + 1;
$('#bottomGridDashboard').append('<tr> <td>' + Index + '</td> <td>' + JSONRaw[i].DisplayName + '</td> <td>' + JSONRaw[i].SpeedInKPH + '</td> <td><img src="' + JSONRaw[i].ImageURL + '" height="20px" alt="" /></td> <td>' + JSONRaw[i].DepotID + '</td> <td>' + JSONRaw[i].RouteID + '/' + JSONRaw[i].ScheduleID + '/' + JSONRaw[i].TripID + '</td> <td>' + JSONRaw[i].Direction + '</td> <td>' + JSONRaw[i].LastStop + '</td> <td> ' + JSONRaw[i].ETAMinutes + ' </td> </tr>');
}
прилагаемой таблице добавляет две дополнительные строки кладя каждое поле, как «не определено». See this Image
Однако, если я заменить петлю с
for (var i = 0; i < JSONRaw.length;i++) {
Index = Index + 1;
$('#bottomGridDashboard').append('<tr> <td>' + Index + '</td> <td>' + JSONRaw[i].DisplayName + '</td> <td>' + JSONRaw[i].SpeedInKPH + '</td> <td><img src="' + JSONRaw[i].ImageURL + '" height="20px" alt="" /></td> <td>' + JSONRaw[i].DepotID + '</td> <td>' + JSONRaw[i].RouteID + '/' + JSONRaw[i].ScheduleID + '/' + JSONRaw[i].TripID + '</td> <td>' + JSONRaw[i].Direction + '</td> <td>' + JSONRaw[i].LastStop + '</td> <td> ' + JSONRaw[i].ETAMinutes + ' </td> </tr>');
}
неопределенные строки исчезают .. See the image
Прошу прощения за мою глупость, но я никогда не сталкивался с какой-либо такой проблемой раньше. В чем может быть причина?
EDIT:
Массив прекрасно. И в нем нет дыр. Другое наблюдение заключается в том, что неопределенные свойства появляются только в нижней части моей сетки. Я думаю, что он обрабатывает два дополнительных индекса больше, чем длина массива.
EDIT-2
Мой console.log показал мне следующие элементы в моем массиве.
http://i.imgur.com/rI5TjdK.jpg
Я объявил прототипы в моей главной странице.
Array.prototype.inArray = function (comparer) {
for (var i = 0; i < this.length; i++) {
if (comparer(this[i])) return true;
}
return false;
};
Array.prototype.pushIfNotExist = function (element, comparer) {
if (!this.inArray(comparer)) {
this.unshift(element);
}
};
Увеличивает ли длина массива. ? ?
Поместите полное содержание своего вопроса * в свой вопрос *, не связывайтесь с сайтом. Вы можете отправлять изображения, но с выходом 'console.log' лучше всего включать его в текст. –
Я позабочусь об этом в будущем .. :) – writeToBhuwan