#javascript
#javascript
Вопрос:
У меня возникли некоторые проблемы с созданием массива объектов в javascript
Пожалуйста, посмотрите мой код ниже и скажите мне, где я ошибаюсь..
Я просто хочу перебрать и получить доступ к значениям
<!-- Read XML Script -->
<script type="text/javascript">
// Object array
var myArray = [];
$(document).ready(function () {
$.ajax({
type: "GET",
url: "HighScore.xml",
dataType: "xml",
success: function (xml) {
$(xml).find('challenger').each(function () {
var name = $(this).find('Name').text();
var watts = $(this).find('Watts').text();
var Mins = $(this).find('Mins').text();
// objects in the array
challenger = new Object();
challenger.name = name;
challenger.watts = watts;
challenger.Mins = Mins;
myArray.push(challenger);
});
// look into the array
for (obj in myArray) {
// do i need to cast ?? how can i view the object ??
alert(obj " - ");
}
},
error: function () {
alert("error");
}
});
});
</script>
Комментарии:
1. что вы подразумеваете под «просмотром объекта»? Вы имеете в виду, как вы можете работать
alert
с его свойствами?2. да, доступ к его свойствам 🙂
Ответ №1:
В for .. in ..
javascript работает иначе, чем в некоторых других языках. Вместо объекта вы получите ключ. Поэтому в вашем массиве вы получите индекс.
Для перебора массивов просто используйте массив на основе индекса, чтобы избежать проблем:
for (var ix = 0; ix < myArray.length; ix ) {
var obj = myArray[ix];
alert(obj.name);
}
Если вы действительно хотите использовать for .. in ..
синтаксис, используйте это:
var a = ['jan', 'klaas'];
for(var key in a) {
if (a.hasOwnProperty(key)) {
console.log(a[key].name);
}
}
Ответ №2:
- for (obj in myArray) {
- // do i need to cast ?? how can i view the object ??
- alert(obj " - ");
- }
for (var i = 0; i < myArray.length; i ) {
var obj = myArray[i];
// do i need to cast ?? how can i view the object ??
alert(JSON.stringify(obj, null, ' '));
}