Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/457.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 需要从变量获取/显示属性_Javascript - Fatal编程技术网

Javascript 需要从变量获取/显示属性

Javascript 需要从变量获取/显示属性,javascript,Javascript,我已经搜索过了,但可能只是不明白,需要一个真正的人来帮助解释。我有一个生成以下变量的脚本: var trackerResult = { "sessionId": "16zA06FJt5sp", "customerId": "16zA06FJt5so", "contact": { "firstName": "Bilbo", "lastName": "Baggins", "email": "bbshireguy@gmail.co

我已经搜索过了,但可能只是不明白,需要一个真正的人来帮助解释。我有一个生成以下变量的脚本:

var trackerResult = {
    "sessionId": "16zA06FJt5sp",
    "customerId": "16zA06FJt5so",
    "contact": {
        "firstName": "Bilbo",
        "lastName": "Baggins",
        "email": "bbshireguy@gmail.com"
    },
    "orders": [{
        "orderId": "16zA06FJt5ss",
        "number": 11512,
        "items": [{
            "price": 97,
            "productId": "16zA06FJt3of",
            "productName": "Main"
        }]
    }, {
        "orderId": "16zA06FJt5sw",
        "number": 11513,
        "items": [{
            "price": 49,
            "productId": "16zA06FJt3op",
            "productName": "Upsell"
        }]
    }],
    "demoMode": "1"
};
我需要能够简单地显示产品名称和价格。如果脚本生成的内容稍微简单一点,我可以这样做,但据我所知,有些属性在技术上是一个孩子的孩子

先谢谢你

trackerResult.orders.forEach( function ( order ) {
    order.items.forEach( function ( item ) {
        console.log( item.productName, item.price );
    });
});

forEach
未在IE8/7中实现,因此您需要在这些浏览器中使用它)

首先,获取该对象并添加一些空白,以便您可以实际查看发生了什么:

var trackerResult = {
    "sessionId":"16zA06FJt5sp",
    "customerId":"16zA06FJt5so",
    "contact":{
        "firstName":"Bilbo",
        "lastName":"Baggins",
        "email":"bbshireguy@gmail.com"
    },
    "orders":[
        {
            "orderId":"16zA06FJt5ss",
            "number":11512,
            "items":[
                {
                    "price":97,
                    "productId":"16zA06FJt3of",
                    "productName":"Main"
                }
            ]
        },
        {
            "orderId":"16zA06FJt5sw",
            "number":11513,
            "items":[
                {
                    "price":49,
                    "productId":"16zA06FJt3op",
                    "productName":"Upsell"
                }
            ]
        }
    ],
    "demoMode":"1"
}; 
现在,要获得产品名称和价格,您可以执行以下操作:

var orders = trackerResult.orders,
    ordercnt = orders.length,
    items, itemcnt, i, j,
    output = "";
for( i=0; i<ordercnt; i++) {
    output += "Order #"+orders[i].number+"\n==========\n";
    items = orders[i].items;
    itemcnt = items.length;
    for( j=0; j<itemcnt; j++) output += items[j].productName+" "+items[j].price;
    output += "\n";
}
// do something with "output";
document.getElementById('price').innerHTML = trackerResult.orders[1].items[0].price;
document.getElementById('productId').innerHTML = trackerResult.orders[1].items[0].productId;
document.getElementById('productName').innerHTML = trackerResult.orders[1].items[0].productName;
var orders=trackerResult.orders,
ordercnt=orders.length,
项目,项目Cnt,i,j,
输出=”;

对于(i=0;i首先,在“contact”
之后缺少一个冒号“:”

现在,在
trackerResult
变量中,您感兴趣的字段是
orders
数组。在
orders
数组的每个成员中,都有一个
items
数组。每个项目都包含名称和价格

我们将在两个嵌套循环中遍历这两个字段

var trackerResult = {"sessionId":"16zA06FJt5sp","customerId":"16zA06FJt5so","contact": {"firstName":"Bilbo","lastName":"Baggins","email":"bbshireguy@gmail.com"},"orders":[{"orderId":"16zA06FJt5ss","number":11512,"items":[{"price":97,"productId":"16zA06FJt3of","productName":"Main"}]},{"orderId":"16zA06FJt5sw","number":11513,"items":[{"price":49,"productId":"16zA06FJt3op","productName":"Upsell"}]}],"demoMode":"1"};

var result = '';

for (var i = 0; i < trackerResult.orders.length; i++) {
    for (var j = 0; j < trackerResult.orders[i].items.length; j++) {
        result += trackerResult.orders[i].items[j].productName + ': ' +  trackerResult.orders[i].items[j].price + '\n';
    }
}

alert(result);
var trackerResult={“sessionId”:“16zA06FJt5sp”,“customerId”:“16zA06FJt5so”,“contact”:{“firstName”:“Bilbo”,“lastName”:“Baggins”,“email”:bbshireguy@gmail.com},“订单”:[{“订单ID”:“16zA06FJt5ss”,“编号”:11512,“项目”:[{“价格”:97,“产品ID”:“16zA06FJt3of”,“产品名称”:“主”}]},{“订单ID”:“16zA06FJt5sw”,“编号”:11513,“项目”:[{“价格”:49,“productId:“16zA06FJt3op”,“productName:“Upsell”}]}],“demoMode:“1”};
var结果=“”;
对于(var i=0;i
首先,var中有一个错误-在“联系”之后缺少一个
。修复此错误将允许我们继续:)

然后,一旦设置好,您需要迭代您的订单以查看所有产品及其价格

for ( var i = 0, l = trackerResult.orders.length; i < l; i++ ) {
    var order = trackerResult.orders[i];
    for ( var j = 0, k = order.items.length; j < k; j++ ) {
        var item = order.items[j];

        // here are the values you need to do something with
        // so do something with them now!
        var productName = item.productName;
        var price = item.price;
        console.log( productName, price );
    }
}
for(var i=0,l=trackerResult.orders.length;i

不知道你想用这些产品做什么,但这会让你接触到它们

要访问,请说出您将使用的订单项目:

trackerResult.orders[1].items[0].price
trackerResult.orders[1].items[0].productId
trackerResult.orders[1].items[0].productName
要将此信息放入HTML页面,您需要执行以下操作:

var orders = trackerResult.orders,
    ordercnt = orders.length,
    items, itemcnt, i, j,
    output = "";
for( i=0; i<ordercnt; i++) {
    output += "Order #"+orders[i].number+"\n==========\n";
    items = orders[i].items;
    itemcnt = items.length;
    for( j=0; j<itemcnt; j++) output += items[j].productName+" "+items[j].price;
    output += "\n";
}
// do something with "output";
document.getElementById('price').innerHTML = trackerResult.orders[1].items[0].price;
document.getElementById('productId').innerHTML = trackerResult.orders[1].items[0].productId;
document.getElementById('productName').innerHTML = trackerResult.orders[1].items[0].productName;
您可以在此处看到一个示例:

但据我所知,有一些财产在技术上是一个孩子的孩子

是的!这里还有一个数组属性

要访问对象中的属性,只需编写以下代码:

alert(trackerResult.sessionId);
这是一个值类型属性。数字是值类型的另一个示例

要访问子对象的属性,只需遵循相同的逻辑:

alert(trackerResult.contact.firstName);
这和第一个例子没什么不同。您正在访问一个属性,该属性是一个包含其自身属性的类型。您可以通过大括号
{}
来说明这一点

最后一个示例是数组类型。访问这些有点不同。首先需要确定数组的大小。可以通过访问可用于所有阵列的length属性来实现这一点

alert("There are " + trackerResult.orders.length + " order(s)!");
一旦确定了数组的长度,就可以使用for循环对其进行迭代,如下所示:

for(var x = 0; x < trackerResult.orders.length; x++)
    alert("Order number " + trackerResult.orders[x].number + " has " + trackerResult.orders[x].items.length + " items!");
for(var x=0;x

从那里,您可以创建另一个循环来迭代每个订单的项目。

trackerResult.orders[0]。项目[0]。price trackerResult.orders[0]。项目[0]。productName您可以使用
forEach对其进行迭代。