2011-12-27 3 views
0

Как выразить эту ошибку javascript-объекта таким образом, чтобы значение первого InvoiceNo не заменялось вторым значением?, определяющий свойства объекта javascript

EDIT < В конечном счете, я хочу объект, называемый myObject, который содержит массив номеров счетов. Каждый номер счета будет иметь соответствующий счет и номер корабля ...

var myObject = {}; 

myObject = { "InvoiceNo" : 44444, 
      "Shipping": 
       { 
        "ShipTo": 22345 , "BillTo": 43456 
       } 
      } 

// some more code here that would capture user input or a data from a remote data feed... 

myObject = { "InvoiceNo" : 555555, 
      "Shipping": 
       { 
        "ShipTo": 32345 , "BillTo": 33456 
       } 
      } 
+1

К сожалению, не могли бы вы уточнить, что вы пытаетесь достичь? Из того, что я вижу, вы можете просто назначить свой второй счет-фактуру другой переменной, например 'myOtherObject'. – sczizzo

+0

Вы ищете массив? Это может быть то, о чем вы говорите: 'var objects = new Array();' Then' objects.push (myObject); 'Dunno хотя ... –

+1

Вы можете создать массив объектов - содержащих отдельные экземпляры. – Bakudan

ответ

0

Вы могли бы сделать что-то простое, как это:

var myObject = [ 
    { 
     "InvoiceNo": 44444, 
     "Shipping": { "ShipTo": 22345, "BillTo": 43456 } 
    }, 
    { 
     "InvoiceNo": 555555, 
     "Shipping": { "ShipTo": 32345, "BillTo": 33456 } 
    } 
]; 
console.log(myObject[0].InvoiceNo); // 0 - the first object inside the array 
console.log(myObject[0].Shipping.ShipTo); // access the "ShipTo" property of the first element 

Для чего-то более сложного JSON Wikipedia и JSONLint для проверки.

JsFiddle demo

1

Насколько я могу сказать, что вы ищете это ...

var myObject = { 
    "44444": {"ShipTo": 22345 , "BillTo": 43456 }, 
    "555555":{"ShipTo": 32345 , "BillTo": 33456 } 
}; 

myObject[ "777777" ] = {"ShipTo": 88888 , "BillTo": 99999 } 

Или это ...

var myObject = { 
    "invoices": [ 
     {"invoice":"44444", "ShipTo": 22345 , "BillTo": 43456 }, 
     {"invoice":"555555", "ShipTo": 32345 , "BillTo": 33456 } 
    ] 
}; 

myObject.invoices.push({"invoice":"777777", "ShipTo": 88888 , "BillTo": 99999 }) 
+0

Да, это правильное направление! но если я делю это на 2 или более заявления, каждое новое утверждение сжимает предыдущее. –

+0

@MustaphaGeorge: Значит, вам нужно знать, как добавить элемент к объекту? –

+0

myObject.myItem = myValue; –

1

Вам не нужно определять какие-либо счета-фактуры в то время myObject инициализируется. Вы можете динамически добавлять их позже:

var myObject = { 
    invoices: [] 
} 

myObject.invoices.push({"invoice":"44444", "ShipTo": 22345 , "BillTo": 43456 }); 
myObject.invoices.push({"invoice":"555555", "ShipTo": 32345 , "BillTo": 33456 }); 
+0

это еще лучше. Вы определяете объект с массивом вверх, а затем заселяетесь, когда данные существуют. хороший! –

Смежные вопросы