Javascript массив объектов — как мне выполнить цикл и получить значения объекта

#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, '  '));
                 }