2015-08-13 128 views
-1

我甚至無法弄清楚這怎麼可能不能訪問節點對象鍵值

當我這樣做:

console.error(order.Items[i]); 

我得到這個:

{ ItemURL: '', 
    IsBundle: false, 
    GiftTaxPrice: '0', 
    GiftPrice: '0', 
    GiftNotes: null, 
    GiftMessage: null, 
    RecyclingFee: 0, 
    ShippingTaxPrice: 0, 
    ShippingPrice: 6, 
    TaxPrice: 0, 
    UnitPrice: 3, 
    Quantity: 1, 
    Title: 'HICKIES TEST PRODUCT', 
    Sku: 'PLSB_TEST_PRODUCT', 
    SiteListingID: '30000418', 
    SiteOrderItemID: '', 
    ProductID: 72176, 
    OrderID: 100152, 
    ProfileID: 12021605, 
    ID: 156, 
    CustomFields: [], 
    Adjustments: [], 
    FulfillmentItems: [], 
    Promotions: [] } 

但由於某種原因,當我嘗試訪問Sku

console.error(order.Items[i].Sku); 

我得到:

undefined 

然而,奇蹟般地出於某種原因

console.error(order.Items[i].Quantity); 

console.error(order.Items[i].UnitPrice); 

打印:

1 

3 

分別

---編輯

按照要求

for (var i = 0; i < order.Items.length; i++) { 
    formatedOrder['Subtotal'] += parseInt(order.Items[i].Quantity) * parseFloat(order.Items[i].UnitPrice); 

    console.error(order.Items[i]); 
    console.error(order.Items[i].Sku); 
    console.error(order.Items[i]['Sku']); 


    formatedOrder["OrderLines"].push({ 
     "Product": order.Items[i].Sku, 
     "Quantity": parseInt(order.Items[i].Quantity), 
     "Price": parseFloat(order.Items[i].UnitPrice) 
    }); 
} 

的要求的項目數組:

[{ ItemURL: '', 
    IsBundle: false, 
    GiftTaxPrice: '0', 
    GiftPrice: '0', 
    GiftNotes: null, 
    GiftMessage: null, 
    RecyclingFee: 0, 
    ShippingTaxPrice: 0, 
    ShippingPrice: 6, 
    TaxPrice: 0, 
    UnitPrice: 3, 
    Quantity: 1, 
    Title: 'HICKIES TEST PRODUCT', 
    Sku: 'PLSB_TEST_PRODUCT', 
    SiteListingID: '30000418', 
    SiteOrderItemID: '', 
    ProductID: 72176, 
    OrderID: 100152, 
    ProfileID: 12021605, 
    ID: 156, 
    CustomFields: [], 
    Adjustments: [], 
    FulfillmentItems: [], 
    Promotions: [] }] 
+0

什麼是「我」,它如何被分配一個值?如果你分享更多的代碼,你會得到更好的結果。 – JeremyFromEarth

+0

出於興趣你用console.error得到了什麼(order.items [i] ['Sku'])? –

+0

代碼在哪裏? – webduvet

回答

0

試試這個,我沒有理由使用console.error()console.log()代替

for (var i = 0; i < order.Items.length; i++) { 
    formatedOrder['Subtotal'] += parseInt(order.Items[i].Quantity) * parseFloat(order.Items[i].UnitPrice); 

    console.log(order.Items[i]); 
    console.log(order.Items[i].Sku); 
    console.log(order.Items[i]['Sku']); 


    formatedOrder["OrderLines"].push({ 
     "Product": order.Items[i].Sku, 
     "Quantity": parseInt(order.Items[i].Quantity), 
     "Price": parseFloat(order.Items[i].UnitPrice) 
    }); 
} 

呵呵令人驚訝!

+0

我剛剛使用了控制檯錯誤,因此它會在我的控制檯中與正在打印的輸出對應。 原來我沒有像我期待的那樣只是一個平面物體。將對象工作得像一個魅力。 – Hickies

+0

試試這個答案,如果這不起作用我會刪除這個。這一個爲我工作。我不知道JS可以給出一個堆棧跟蹤。你的log.error在FF – joyBlanks

-1

JSON.Stringify()解決了問題,原來的目標是不平坦的JSON對象,像我預期,但一些其他的對象,並沒有讓我剛剛訪問值

+0

中給了我一個堆棧跟蹤,這就是爲什麼我要求看看Item的樣子(數組,不只是一個元素)......基本上是確認所有元素的結構(不是隻是你發佈的那個) – ochi