简体   繁体   English

如何从具有对象数组的对象访问数据javascript

[英]how to access data from a objects that has an array of objects javascript

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所以我想获得数组的长度也可以访问像 customer_name 等的子属性

You need to use property accessors .您需要使用属性访问器 You might also want to have a read of Object Basics .您可能还想阅读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)

Inside the object value of data key is an array of objects. data键的对象值内部是一个对象数组。 So in order to access any key like customer_name you can use dot (.) or square[] notation.因此,为了访问诸如customer_name类的任何键,您可以使用dot (.)square[]表示法。 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) })

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.然后我包含了一个基本的 for 循环来遍历数组,以及 Object.values 将只显示数组中对象的属性。 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.另外...data.length 会给你对象的数量。 I'm not sure of how to get the number of keys or properties though.我不确定如何获取键或属性的数量。

A nested for in loop will do the trick for you.嵌套的 for in 循环将为您解决问题。 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. for in 循环是一种很好且简单的遍历对象的方法。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM