2011-12-27 83 views
0

如何以第一个InvoiceNo的值不会被第二个值替换的方式表示这个javascript对象定义?定义一个JavaScript对象属性

编辑<最终我想要一个名为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 2011-12-27 22:59:52

+0

你在寻找一个数组吗?这可能是你正在谈论的:'var objects = new Array();'Then' objects.push(myObject);'虽然......不知道...... – 2011-12-27 23:02:05

+1

你可以创建一个对象数组 - 持有不同的实例。 – Bakudan 2011-12-27 23:03:10

回答

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 WikipediaJSONLint验证。

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

是的,这是正确的方向!但是如果我把它分成两个或更多的陈述,每个新陈述都会破坏前一个陈述。 – 2011-12-27 23:09:59

+0

@MustaphaGeorge:所以你需要知道如何添加一个项目到一个对象? – 2011-12-27 23:10:32

+0

myObject.myItem = myValue; – 2011-12-27 23:12:22

1

您在初始化myObject时无需定义任何发票。您可以动态地在以后添加他们:

var myObject = { 
    invoices: [] 
} 

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

这更好。您正在预先定义一个具有数组的对象,然后填充数据存在的时间。太好了! – 2011-12-27 23:20:59

相关问题