init javascript对象,带有子对象的数组属性

时间:2015-03-26 18:50:02

标签: javascript

有没有办法在一行中使用子对象数组初始化javascript对象?如何在初始化行中执行以下操作。

var obj = {doc: 100,
           defaultrateid: 32,
           rates: [],
          };
obj.rates[31] = {rate: 101.00, name: "Rate 1"};
obj.rates[32] = {rate: 121.00, name: "Rate 2"};

基本上我想要的是一个具有我的用户参数的javascript对象。此对象将在多个Web表单上重用。对于' rates',表单将有一个下拉列表来选择费率。网络表单具有客户端计算,需要基于费率的唯一ID(例如32)匹配费率对象。

我尝试使用关联数组,而不必根据唯一值进行循环查找匹配。

2 个答案:

答案 0 :(得分:4)

看起来有点hacky:

obj = {
    doc: 100,
    defaultrateid: 32,
    rates: (new Array(30)).concat([{
        rate: 101.00,
        name: "Rate 1"
    }, {
        rate: 121.00,
        name: "Rate 2"
    }])
};

编辑:

也许你真的不需要数组,你可以使用这样的对象:

obj = {
    doc: 100,
    defaultrateid: 32,
    rates: {
        "31": {
            rate: 101.00,
            name: "Rate 1"
        },
        "32": {
            rate: 121.00,
            name: "Rate 2"
        }
    }
};

您仍然可以获得obj.rates[31]等费率。

答案 1 :(得分:0)

你的意思是这样吗?

var obj = {
  doc: 100,
  defaultrateid: 32,
  rates: [{
    rate: 101.00
  }, {
    rate: 121.00
  }],
};

alert(obj.rates[1].rate);