Как получить доступ к многомерному массиву в JavaScript - PullRequest
0 голосов
/ 29 марта 2019
$.ajax({

    url : 'phpscript/eventDayRender.php',
    type: 'POST',
    async : false,
    global : false,
    success:function(data){

        var obj = JSON.parse(data);

        var len = parseInt(obj.total);

        //var rack_count = Object.keys(obj['data']).length;

        //console.log(rack_count);

        for(var k=0; k < len; k++){

            html +='<tr>';

      //Here i am not able to access the value day-min.js:137
      //Uncaught TypeError: Cannot read property '0' of undefined at Object.success (day-min.js:137)
                html +='<td><div class="slot">'+obj[k][0]+'</div></td>'; 
                html +='<td><div class="rack">Hello</div></td>';
                html +='<td><div class="rack">Hello</div></td>';

            html +='</tr>';
        }
    }
});

массив - это что-то вроде

{
  "data": {
    "12:00 am to 04:00 am": {
      "bookings": {
        "user": "Rishabh",
        "date": "2019-3-31",
        "slot": "08:00 pm to 12:00 am",
        "rack": "1"
      }
    },
    "04:00 am to 08:00 am": {
      "bookings": {
        "user": "Rishabh",
        "date": "2019-3-31",
        "slot": "08:00 pm to 12:00 am",
        "rack": "1"
      }
    },
    "08:00 am to 12:00 pm": {
      "bookings": {
        "user": "Rishabh",
        "date": "2019-3-31",
        "slot": "08:00 pm to 12:00 am",
        "rack": "1"
      }
    },
    "12:00 pm to 04:00 pm": {
      "bookings": {
        "user": "Rishabh",
        "date": "2019-3-31",
        "slot": "08:00 pm to 12:00 am",
        "rack": "1"
      }
    },
    "04:00 pm to 08:00 pm": {
      "bookings": {
        "user": "Rishabh",
        "date": "2019-3-31",
        "slot": "08:00 pm to 12:00 am",
        "rack": "1"
      }
    },
    "08:00 pm to 12:00 am": {
      "bookings": {
        "user": "Rishabh",
        "date": "2019-3-31",
        "slot": "08:00 pm to 12:00 am",
        "rack": "1"
      }
    }
  },
  "total": "6"
}

В этом я хочу получить доступ с 12:00 до 04:00, но когда я передаю аргумент в цикле, выдает вышеуказанную ошибку.

1 Ответ

3 голосов
/ 29 марта 2019

Вы не можете индексировать объект таким образом. Вам необходимо передать ключ, который в вышеприведенном случае является «с 12:00 до 04:00». Таким образом, вы можете получить к нему доступ через obj.data["12:00 am to 04:00 am"].

Если вы хотите перебрать объект, используйте следующий способ.

for (var key in obj.data) {
    if (obj.data.hasOwnProperty(key)) {
        console.log(key + " -> " + obj.data[key]);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...