-2

Can someone please help me with some code on how to access data from an object that have an array of objects. Here is my array:

{
    "data": [{
        "order_id": "336566",
        "customer_name": "joel",
        "customer_surname": "kabeya",
        "total_items": "0",
        "completed_items": "0",
        "percent_complete": 1,
        "datetime_received": "2019-01-21 15:00:27",
        "delivery_date": "2019-01-24",
        "delivery_from": "10:30",
        "delivery_to": "12:00",
        "completed": "1",
        "shopper": "joel"
    }, {
        "order_id": "335719",
        "customer_name": "joel",
        "customer_surname": "kabeya",
        "total_items": "0",
        "completed_items": "0",
        "percent_complete": 1,
        "datetime_received": "2018-12-24 13:46:27",
        "delivery_date": "2018-12-30",
        "delivery_from": "10:30",
        "delivery_to": "12:00",
        "completed": "1",
        "shopper": "joel"
    }, {
        "order_id": "336531",
        "customer_name": "Tay",
        "customer_surname": "Z",
        "total_items": "0",
        "completed_items": "0",
        "percent_complete": 1,
        "datetime_received": "2019-01-11 08:42:27",
        "delivery_date": "2019-01-17",
        "delivery_from": "10:30",
        "delivery_to": "12:00",
        "completed": "1",
        "shopper": "joel"
    }, {
        "order_id": "336545",
        "customer_name": "joel",
        "customer_surname": "kabeya",
        "total_items": "0",
        "completed_items": "0",
        "percent_complete": 1,
        "datetime_received": "2019-01-17 19:00:27",
        "delivery_date": "2019-01-18",
        "delivery_from": "11:00",
        "delivery_to": "12:00",
        "completed": "0",
        "shopper": "joel"
    }, {
        "order_id": "241918",
        "customer_name": "Marietjie",
        "customer_surname": "Short",
        "total_items": "44",
        "completed_items": "7",
        "percent_complete": 0.15909090909091,
        "datetime_received": "2018-07-25 15:18:25",
        "delivery_date": "2018-10-29",
        "delivery_from": "12:00",
        "delivery_to": "13:00",
        "completed": "0",
        "shopper": "Tay"
    }, {
        "order_id": "281774",
        "customer_name": "Ashleigh",
        "customer_surname": "Hodge",
        "total_items": "16",
        "completed_items": "0",
        "percent_complete": 0,
        "datetime_received": "2018-10-04 15:59:19",
        "delivery_date": "2018-10-29",
        "delivery_from": "12:00",
        "delivery_to": "13:00",
        "completed": "0",
        "shopper": null
    }, {
        "order_id": "336544",
        "customer_name": "joel",
        "customer_surname": "kabeya",
        "total_items": "0",
        "completed_items": "0",
        "percent_complete": 1,
        "datetime_received": "2019-01-17 08:00:27",
        "delivery_date": "2019-01-19",
        "delivery_from": "13:00",
        "delivery_to": "14:00",
        "completed": "0",
        "shopper": "joel"
    }]
}

So I want to get the length of the array also to access child properties like customer_name etc

Nick Parsons
  • 45,728
  • 6
  • 46
  • 64
maggie
  • 1
  • 2

4 Answers4

0

You need to use property accessors. You might also want to have a read of Object Basics.

const obj = {
    "data": [{
        "order_id": "336566",
        "customer_name": "joel",
        "customer_surname": "kabeya",
        "total_items": "0",
        "completed_items": "0",
        "percent_complete": 1,
        "datetime_received": "2019-01-21 15:00:27",
        "delivery_date": "2019-01-24",
        "delivery_from": "10:30",
        "delivery_to": "12:00",
        "completed": "1",
        "shopper": "joel"
    }, {
        "order_id": "335719",
        "customer_name": "joel",
        "customer_surname": "kabeya",
        "total_items": "0",
        "completed_items": "0",
        "percent_complete": 1,
        "datetime_received": "2018-12-24 13:46:27",
        "delivery_date": "2018-12-30",
        "delivery_from": "10:30",
        "delivery_to": "12:00",
        "completed": "1",
        "shopper": "joel"
    }, {
        "order_id": "336531",
        "customer_name": "Tay",
        "customer_surname": "Z",
        "total_items": "0",
        "completed_items": "0",
        "percent_complete": 1,
        "datetime_received": "2019-01-11 08:42:27",
        "delivery_date": "2019-01-17",
        "delivery_from": "10:30",
        "delivery_to": "12:00",
        "completed": "1",
        "shopper": "joel"
    }, {
        "order_id": "336545",
        "customer_name": "joel",
        "customer_surname": "kabeya",
        "total_items": "0",
        "completed_items": "0",
        "percent_complete": 1,
        "datetime_received": "2019-01-17 19:00:27",
        "delivery_date": "2019-01-18",
        "delivery_from": "11:00",
        "delivery_to": "12:00",
        "completed": "0",
        "shopper": "joel"
    }, {
        "order_id": "241918",
        "customer_name": "Marietjie",
        "customer_surname": "Short",
        "total_items": "44",
        "completed_items": "7",
        "percent_complete": 0.15909090909091,
        "datetime_received": "2018-07-25 15:18:25",
        "delivery_date": "2018-10-29",
        "delivery_from": "12:00",
        "delivery_to": "13:00",
        "completed": "0",
        "shopper": "Tay"
    }, {
        "order_id": "281774",
        "customer_name": "Ashleigh",
        "customer_surname": "Hodge",
        "total_items": "16",
        "completed_items": "0",
        "percent_complete": 0,
        "datetime_received": "2018-10-04 15:59:19",
        "delivery_date": "2018-10-29",
        "delivery_from": "12:00",
        "delivery_to": "13:00",
        "completed": "0",
        "shopper": null
    }, {
        "order_id": "336544",
        "customer_name": "joel",
        "customer_surname": "kabeya",
        "total_items": "0",
        "completed_items": "0",
        "percent_complete": 1,
        "datetime_received": "2019-01-17 08:00:27",
        "delivery_date": "2019-01-19",
        "delivery_from": "13:00",
        "delivery_to": "14:00",
        "completed": "0",
        "shopper": "joel"
    }]
}

//Length
console.log(obj.data.length)

//Child Item
console.log(obj.data[3].order_id)
BlueWater86
  • 1,773
  • 12
  • 22
0

Inside the object value of data key is an array of objects. So in order to access any key like customer_name you can use dot (.) or square[] notation. You can follow this link to find difference between the two

let myData = {
  "data": [{
    "order_id": "336566",
    "customer_name": "joel",
    "customer_surname": "kabeya",
    "total_items": "0",
    "completed_items": "0",
    "percent_complete": 1,
    "datetime_received": "2019-01-21 15:00:27",
    "delivery_date": "2019-01-24",
    "delivery_from": "10:30",
    "delivery_to": "12:00",
    "completed": "1",
    "shopper": "joel"
  }, {
    "order_id": "335719",
    "customer_name": "joel",
    "customer_surname": "kabeya",
    "total_items": "0",
    "completed_items": "0",
    "percent_complete": 1,
    "datetime_received": "2018-12-24 13:46:27",
    "delivery_date": "2018-12-30",
    "delivery_from": "10:30",
    "delivery_to": "12:00",
    "completed": "1",
    "shopper": "joel"
  }, {
    "order_id": "336531",
    "customer_name": "Tay",
    "customer_surname": "Z",
    "total_items": "0",
    "completed_items": "0",
    "percent_complete": 1,
    "datetime_received": "2019-01-11 08:42:27",
    "delivery_date": "2019-01-17",
    "delivery_from": "10:30",
    "delivery_to": "12:00",
    "completed": "1",
    "shopper": "joel"
  }, {
    "order_id": "336545",
    "customer_name": "joel",
    "customer_surname": "kabeya",
    "total_items": "0",
    "completed_items": "0",
    "percent_complete": 1,
    "datetime_received": "2019-01-17 19:00:27",
    "delivery_date": "2019-01-18",
    "delivery_from": "11:00",
    "delivery_to": "12:00",
    "completed": "0",
    "shopper": "joel"
  }, {
    "order_id": "241918",
    "customer_name": "Marietjie",
    "customer_surname": "Short",
    "total_items": "44",
    "completed_items": "7",
    "percent_complete": 0.15909090909091,
    "datetime_received": "2018-07-25 15:18:25",
    "delivery_date": "2018-10-29",
    "delivery_from": "12:00",
    "delivery_to": "13:00",
    "completed": "0",
    "shopper": "Tay"
  }, {
    "order_id": "281774",
    "customer_name": "Ashleigh",
    "customer_surname": "Hodge",
    "total_items": "16",
    "completed_items": "0",
    "percent_complete": 0,
    "datetime_received": "2018-10-04 15:59:19",
    "delivery_date": "2018-10-29",
    "delivery_from": "12:00",
    "delivery_to": "13:00",
    "completed": "0",
    "shopper": null
  }, {
    "order_id": "336544",
    "customer_name": "joel",
    "customer_surname": "kabeya",
    "total_items": "0",
    "completed_items": "0",
    "percent_complete": 1,
    "datetime_received": "2019-01-17 08:00:27",
    "delivery_date": "2019-01-19",
    "delivery_from": "13:00",
    "delivery_to": "14:00",
    "completed": "0",
    "shopper": "joel"
  }]
}

console.log('Length of data array ', myData.data.length)

// this will get customer_name

myData.data.forEach(function(item) {
  console.log(item.customer_name)
})
brk
  • 48,835
  • 10
  • 56
  • 78
0

I can get you started with some of it, since I recently did something similar. I'm not one of the experts and I'm learning also. So I condensed your array to what you see below just for testing.

Then I included a basic for loop to go through the array, along with Object.values which will show just the properties of your objects within the array. There are tons of different ways to access this data, but someone more experienced would be able to help more.

let data = [
      {
        order_id: "336566",
        customer_name: "joel",
        customer_surname: "kabeya",
        total_items: "0"
      },
      {
        order_id: "335719",
        customer_name: "joel",
        customer_surname: "kabeya",
        total_items: "0",
        completed_items: "0",
        percent_complete: 1,
        datetime_received: "2018-12-24 13:46:27"
      },
      {
        order_id: "336531",
        customer_name: "Tay",
        customer_surname: "Z",
        total_items: "0",
        completed_items: "0",
        percent_complete: 1
      }
    ];

      for(var i = 0; i < data.length; i++){
        console.log(Object.values(data[i]));  //or however you choose to display it
      }

Also...data.length will give you the number of objects. I'm not sure of how to get the number of keys or properties though.

sclark
  • 43
  • 5
0

A nested for in loop will do the trick for you. Hopefully this helps

var res = {
    "data": [{
        "order_id": "241918",
        "customer_name": "Marietjie",
        "customer_surname": "Short",
        "total_items": "44",
        "completed_items": "7",
        "percent_complete": 0.15909090909091,
        "datetime_received": "2018-07-25 15:18:25",
        "delivery_date": "2018-10-29",
        "delivery_from": "12:00",
        "delivery_to": "13:00",
        "completed": "0",
        "shopper": "Tay"
    },{
        "order_id": "336544",
        "customer_name": "joel",
        "customer_surname": "kabeya",
        "total_items": "0",
        "completed_items": "0",
        "percent_complete": 1,
        "datetime_received": "2019-01-17 08:00:27",
        "delivery_date": "2019-01-19",
        "delivery_from": "13:00",
        "delivery_to": "14:00",
        "completed": "0",
        "shopper": "joel"
    }]
}


for(var char in res){
    for(var obj in res[char]){
        // Log all the customer names for example.
        console.log(JSON.stringify(res[char][obj].customer_name));
    }
}

For in loops are a nice and simple way to loop over objects.

Spangle
  • 762
  • 1
  • 5
  • 14